PrimeFaces是一个JSF(Java Server Faces)组件库,附带了大量丰富的组件,这些组件利用了jQuery和jQuery UI。它支持jQuery UI ThemeRoller CSS框架和FontAwesome图标集。请注意,此标签不应与[PrimeNG]结合使用。
Primefaces:动态更改<p:ajax element?
JSF、Java Server Faces、Primefaces。 我正在努力寻找如何更改 的更新属性的解决方案 JSF、Java Server Faces、Primefaces。 我正在努力寻找如何更改 的更新属性的解决方案 场景:带有 的对话 <p:dialog modal="true"> <p:ajax event="close" update="COMPONENT IDs" listener="#{bean.onClose()}" /> 我想在打开对话框时更改更新属性。 我试过了 使用 EL 表达式值从 bean 获取变化的属性值。 这不起作用,因为属性值是在第一次渲染时设置的,并且再也不会设置 在bean的监听器方法中添加更新组件ID: PrimeFaces.current().ajax().update("component IDs"); 这有效。 但:不适用于 PrimeFaces 选择器 (PFS)。我需要那个。 就像更新=“@(.mystyle)” (我猜是因为在这种情况下,组件是由 jquery 在客户端选择的。) 有什么想法吗? 谢谢 彼得 彼得, 有一个允许动态update=""的开放票证,这也是一个开放的面孔规范问题。请参阅 Faces 规范问题:https://github.com/jakartaee/faces/issues/1499 但是您考虑过 PrimeFaces 中的观察者模式吗? https://www.primefaces.org/showcase/ui/ajax/observer.xhtml 基本上,您的对话框应该只是“触发事件”,并且您的组件应该订阅该事件。 如果任何组件不是 rendered="",它们显然不会关心该事件。 所以对话框的工作只是触发一个 closeDialog 事件,并且页面上呈现的任何关心该事件的组件都应该订阅?
我已使用 build.gradle 更新到 Omnifaces 3.3: 编译组:'org.omnifaces',名称:'omnifaces',版本:'3.3' 我的 EAR 可以在 3.2 上运行,但在部署 3.3 时出现以下错误: 21:07...
我有一个上传文件的小部件,我想在上传后预览文件。我正在使用 p:media 标签,但它没有显示上传的 pdf 文件。 但是,我有另一个小部件,其中有一个...
在 Primefaces 中显示用户上传的 pdf 文件 |春季启动
我有一个上传文件的小部件,我想在上传后预览文件。我正在使用 p:media 标签,但它没有显示上传的 pdf 文件。 但是,我有另一个小部件,其中有一个
p:带有@requestscoped bean PhaseId null的graphicImage
我尝试使用 @RequestScoped bean 从流中加载图像。我将 JSF 和 JavaEE7 与 Primefaces 7.0 和 Wildfly 9 一起使用。 我尝试使用 @RequestScoped bean 从流中加载图像。我将 JSF 和 JavaEE7 与 Primefaces 7.0 和 Wildfly 9 结合使用。 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui"> <h:outputStylesheet name="primeicons/primeicons.css" library="primefaces" /> <h:form> <p:scrollPanel> <ui:repeat value="${u.fileInfos}" var="image" id="manuelSwitcherImages"> <p:link href="${request.contextPath}/admin/single-fileInfo.xhtml"> <f:param name="fileName" value="${image.uniqueFileName}"/> <p:graphicImage value="${imageView.image}" width="500" id="image" rendered="${!image.uniqueFileName.isEmpty()}"> <f:param name="fileName" value="${image.uniqueFileName}" /> </p:graphicImage> </p:link> </ui:repeat> </p:scrollPanel> </h:form> </ui:composition> 还有支撑豆: @Named @RequestScoped public class ImageView implements Serializable { private static final long serialVersionUID = -1067751029307336424L; @Inject private AppProperties appProperties; private DefaultStreamedContent image; public ImageView() { } @PostConstruct public void setStream() { image = new DefaultStreamedContent(); FacesContext context = FacesContext.getCurrentInstance(); Map<String, String> map = context.getExternalContext().getRequestParameterMap(); String fileName = map.get("fileName"); System.out.println("PhaseId:" + context.getCurrentPhaseId() + " fileName:"+fileName); if (context.getCurrentPhaseId() != PhaseId.RENDER_RESPONSE) { if (fileName != null && !fileName.isEmpty()) { image.setContentType("image/jpeg"); FileInputStream fis; try { fis = new FileInputStream( new File(appProperties.getDocinfoRootPath() + File.separatorChar + fileName)); image.setStream(fis); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } public DefaultStreamedContent getImage() { return image; } } 当我加载页面时,以下内容会记录到控制台: 09:48:58,562 INFO [stdout] (default task-48) PhaseId:RENDER_RESPONSE 6 fileName:null 09:49:02,331 INFO [stdout] (default task-49) PhaseId:null fileName:IMG_20240730_203743_494451608254739966.jpg 当我单击链接以在单个视图中显示图像(或加载请求:http://localhost:8080/forras-admin/admin/single-fileInfo.xhtml?fileName=IMG_20240801_103857_3362857899511577984.jpg)时,日志如下: 10:03:00,553 INFO [stdout] (default task-114) PhaseId:RENDER_RESPONSE 6 fileName:IMG_20240731_155939_3742115169047896565.jpg 10:03:00,764 INFO [stdout] (default task-115) PhaseId:null fileName:null 单一视图如下所示: <?xml version="1.0" encoding="UTF-8"?> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:dp="http://integrity.hu/dynap" template="/WEB-INF/templates/default.xhtml"> <ui:define name="content"> <h:form> <p:graphicImage value="${imageView.image}" id="singleimage" /> </h:form> </ui:define> </ui:composition> 为什么 PhaseId 为空,如何处理 RENDER_RESPONSE 中的不同文件内容?为什么图像在单一视图中不可见? 非常感谢您的建议。 以下代码在单一视图中对我有用: <?xml version="1.0" encoding="UTF-8"?> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:dp="http://integrity.hu/dynap" template="/WEB-INF/templates/default.xhtml"> <ui:define name="content"> <h:form> <p:scrollPanel style="width:100%;height:500px;"> <p:graphicImage value="${imageView.image}" id="singleimage"> <f:param name="fileName" value="#{request.getParameter('fileName')}" /> </p:graphicImage> </p:scrollPanel> </h:form> </ui:define> </ui:composition>
如何在 PrimeFaces 中通过 JavaScript 触发组件刷新?
是否可以从 javascript 更新 PrimeFaces 组件,以便强制刷新? 我正在对话框中使用此按钮进行 ajax 保存调用。 我已附上我的自定义 javascr...
如何验证每个带有 required="true" 的 <p:cellEditor><f:facet name="input"> 是否已填写?
所以我有这个 JSF 代码,它将显示数据表的一列,并且每一列都必须填写。我还将 rowEdit 按钮放在右侧。因此,在用户填写数据之前,必须单击
所以我有这个 JSF 代码,它将显示数据表的一列,并且每一列都必须填写。我还将 rowEdit 按钮放在右侧。因此,在用户填写数据之前,必须单击
我在这里查看了“更新”标签的 Primefaces 选择器:Update="@(.myClass)" 中的 PrimeFaces 选择器如何工作? 我想知道是否有类似的东西...
我在这里查看了“更新”标签的 Primefaces 选择器:Update="@(.myClass)" 中的 PrimeFaces 选择器如何工作? 我想知道是否有类似的东西...
PrimeNG 表库过滤工作正常 - 文档不清楚或可能已过时
我的目标是在表格组件中显示个人列表,并根据某些条件进行过滤和/或搜索。我的模板代码如下: 我的目标是在表格组件中显示个人列表,并根据某些条件进行过滤和/或搜索。我的模板代码如下: <div class="flex flex-col bg-gray-100 p-6 mx-auto w-auto"> <header class="bg-white shadow p-4 flex items-center justify-between"> <h1 class="text-lg font-bold">East Portland Constituency Voters </h1> <div> <button class="bg-blue-600 text-white px-4 py-2 rounded">Logout</button> </div> </header> <br> <div class="mt-8 bg-white p-6 rounded shadow mb-4"> <div class="card"> <p-table #dt [value]="voters" dataKey="id" [rows]="10" [globalFilterFields]="['firstName', 'lastName', 'email', 'affiliation', 'role', 'gender']" [rowsPerPageOptions]="[10, 25, 50]" [paginator]="true" [tableStyle]="{ 'min-width': '75rem' }"> <ng-template pTemplate="caption"> <div class="flex justify-between"> <p-button label="Clear" [outlined]="true" icon="pi pi-filter-slash" (onClick)="clear(dt)" /> <span class="p-input-icon-left ml-autod"> <i class="pi pi-search"></i> <input pInputText type="text" [(ngModel)]="searchValue" (input)="dt.filterGlobal(getEventValue($event), 'contains')" placeholder="Search for voter" /> </span> </div> </ng-template> <ng-template pTemplate="header"> <tr> <th style="min-width:10rem"> <div class="flex align-items-center"> First Name </div> </th> <th style="min-width:10rem"> <div class="flex align-items-center"> Last Name </div> </th> <th style="min-width:15rem"> <div class="flex align-items-center"> Email </div> </th> <th style="min-width:15rem"> <div class="flex align-items-center"> Affiliation </div> </th> <th style="min-width:15rem"> <div class="flex align-items-center"> Role </div> </th> <th style="min-width:15rem"> <div class="flex align-items-center"> Gender </div> </th> </tr> <tr> <th></th> <th></th> <th></th> <th style="min-width:15rem"> <div class="flex align-items-center"> <p-columnFilter field="affiliation" matchMode="in" [showMenu]="false"> <ng-template pTemplate="filter" let-filter="filterCallback" > <p-multiSelect [(ngModel)]="selectedAffils" [options]="affiliations" placeholder="Any" (onChange)="filter($event.value)"> </p-multiSelect> </ng-template> </p-columnFilter> </div> </th> <th style="min-width:15rem"> <div class="flex align-items-center"> <p-columnFilter field="role" matchMode="in" [showMenu]="false"> <ng-template pTemplate="filter" let-filter="filterCallback"> <p-multiSelect [(ngModel)]="selectedRoles" [options]="roles" placeholder="Any" (onChange)="filter($event.value)" > </p-multiSelect> </ng-template> </p-columnFilter> </div> </th> <th style="min-width:10rem"> <div class="flex align-items-center"> <p-columnFilter field="gender" matchMode="in" [showMenu]="false"> <ng-template pTemplate="filter" let-filter="filterCallback"> <p-dropdown [(ngModel)]="selectedGender" [options]="genders" placeholder="Any" (onChange)="filter($event.value)" > </p-dropdown> </ng-template> </p-columnFilter> </div> </th> </tr> </ng-template> <ng-template pTemplate="body" let-voter> <tr> <td> {{ voter.firstName }} </td> <td> {{ voter.lastName }} </td> <td> {{ voter.email }} </td> <td> {{ voter.voterAffiliation }} </td> <td> {{ voter.supporterRole }} </td> <td> {{ voter.gender }} </td> </tr> </ng-template> <ng-template pTemplate="emptymessage"> <tr> <td colspan="6">No voters found.</td> </tr> </ng-template> </p-table> </div> </div> </div> 组件代码: import { VoterServiceService } from './../services/voter-service.service'; import { Component, inject, OnInit } from '@angular/core'; import { SUPPORT_ROLE, Voter, VOTER_AFFILIATION } from '../data/data.schema'; import { Table, TableModule } from 'primeng/table'; import { MultiSelect, MultiSelectChangeEvent } from 'primeng/multiselect'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; @Component({ selector: 'app-search-voters', standalone: true, imports:[TableModule, MultiSelect,CommonModule,FormsModule], templateUrl: './search-voters.component.html', styleUrl: './search-voters.component.css' }) export class SearchVotersComponent implements OnInit { selectedAffils: string[] selectedRoles: string[] selectedGender: string; voter: Voter | undefined; layout: string = 'list' voters!: Voter[] | undefined; genders: string[] | undefined; roles: string[] | undefined; affiliations: string[] | undefined; private voterServiceService = inject(VoterServiceService); searchValue:string | undefined; loading:boolean; ngOnInit(): void { this.voters = this.voterServiceService.getVoters(); this.genders = [ 'Male' , 'Female', ]; this.roles = [ SUPPORT_ROLE.CLUSTER_SUPERVISOR , SUPPORT_ROLE.PD_CAPTAIN , SUPPORT_ROLE.INDOOR_AGENT , SUPPORT_ROLE.OUTDOOR_AGENT , SUPPORT_ROLE.COUNCILLOR , SUPPORT_ROLE.MINISTER_OF_PARLIAMENT , SUPPORT_ROLE.RUNNER , SUPPORT_ROLE.DRIVER , ]; this.affiliations = [ VOTER_AFFILIATION.JLP, VOTER_AFFILIATION.PNP, VOTER_AFFILIATION.NK, VOTER_AFFILIATION.DEAD, ]; } viewSelect(select : MultiSelectChangeEvent){ console.log(select) } clear(table:Table){ table.clear(); this.selectedAffils = [] this.selectedGender = '' this.selectedRoles = [] } getEventValue(e: Event ){ return (e.target as HTMLInputElement).value } } 内容正在呈现,但输入搜索功能正在正常工作。我的问题是使用多选和下拉列表进行列过滤。以前我尝试按照文档的方法来实现这一点: <p-columnFilter field="status" matchMode="equals" [showMenu]="false"> <ng-template pTemplate="filter" let-value let-filter="filterCallback"> <p-dropdown [(ngModel)]="value" [options]="statuses" (onChange)="filter($event.value)" placeholder="Select One" [showClear]="true"> </p-dropdown> </ng-template> </p-columnFilter> 利用 ngmodel 指令上的值会导致 无法在双向绑定表达式中使用非信号变量“值”。模板变量是只读的。ngtsc(-99)代码中出现错误。不确定可能是什么问题。一些帮助将不胜感激。 尝试将 [(ngModel)]='value' 更改为单向类绑定,[ngModel]='value'。 这是只读的,应该可以解决您的问题。
尝试过 PF 传统图表,如条形图、折线图和饼图。酒吧正在营业。但线条和饼图没有显示。从展示中,不要将这些图表列在左侧菜单上。他们被新的c取代了吗...
如何获取Primefaces Filtered DataTable字段中输入的值?
我有一个数据表: 我有一个数据表: <p:dataTable id="pDataTableListaRegistros" var="registro" value="#{arquivoBean.listaRegistros}" paginator="true" rows="20" filteredValue="#{arquivoBean.filteredListaRegistros}" styleClass="tabelaCentralizada"> 我想获取在过滤器字段“Code”、“Data do Registro”和“Usuário”中输入的值,以便在支持 bean 中进行操作。 您可以通过以下方式从数据表中获取过滤值: 通过绑定或遍历树从视图获取对数据表的引用。通过绑定,您将拥有: <p:dataTable binding="#{arquivoBean.theDataTable}" id="pDataTableListaRegistros" var="registro" value="#{arquivoBean.listaRegistros}" paginator="true" rows="20" filteredValue="#{arquivoBean.filteredListaRegistros}" styleClass="tabelaCentralizada"/> 在你的支持豆中: DataTable theDataTable = new DataTable(); //getter and setter 来自装订 Map<String, String> theFilterValues = theDataTable.getFilters(); //This returns a map of column-filterText mapping. 您可以向您的 bean 添加映射,例如: private Map<String, Serializable> filterValues = new HashMap<>(); 并使用 filterValue 的 p:column 属性将值绑定到地图,例如: <p:column headerText="Name" sortBy="#{item.name}" filterBy="#{item.name}" filterMatchMode="contains" filterValue="#{yourBean.filterValues['name']}"> #{item.name} </p:column> 此解决方案的优点是,当您更新表时,这些值将被保留。
我有一个数据表,并且特定行的复选框被禁用。但它没有显示为选定的。 我想将其显示为默认选中状态,尽管它默认处于禁用状态。 请帮助我如何做...
如何获取<p:dataTable> Primefaces中选定的单元格?
如果可能的话,我想获取Primefaces的选定单元格或列(id) 我的桌子是这样的: 如果可能的话,我想获取 Primefaces 的选定单元格或列(id)<p:dataTable> 我的桌子是这样的: <p:dataTable id="table" var="list" value="#{bean.list}" rowKey="#{list}" selectionMode="single" > <p:ajax event="rowSelect" listener="#{bean.onRowSelect}" /> <p:column headerText="Date" > <h:outputText value="#{list.SDate}" /> </p:column> <p:column headerText="Name" > <h:outputText value="#{list.IName}" /> </p:column> </p:dataTable> 通过这种方法,我可以使用以下方法选择行(行): <p:ajax event="rowSelect" listener="#{bean.onRowSelect}" /> 但是我无法获取选定的列 Date 或 Name 方法onRowSelect就像: public void onRowSelect(SelectEvent event) { myObject obj = (myObject)event.getObject(); // ... } 卡里姆, 我认为你忘记在你的ajax事件上添加update: <p:ajax event="rowSelect" listener="#{bean.onRowSelect}" update="table" /> 在 update 上,您需要放置表格 ID 或封装表格的元素。 如果表位于outputPanel内,您可以更新它的id而不是表。 update属性是发送屏幕信息所必需的 到你的背豆。 希望对您有所帮助... 祝你好运! 您可以执行类似的操作来获取特定列的值 <p:dataTable id="firsttable" var="list" value="#{bean.list}" rowKey="#{list}" selectionMode="single" > <p:column headerText="Date" > <h:outputText value="#{list.SDate}" /> </p:column> <p:column headerText="Name" > <h:outputText value="#{list.IName}" /> </p:column> </p:dataTable> // This is capture the value of selected column <h:inputText id="selectedId" value="#{bean.selectedColumn}" style="display:none"> <f:ajax listener="#{bean.onRowSelect}"></f:ajax> </h:inputText> 此脚本捕获所选行的值并设置 inputHidden jQuery.noConflict(); $(window).load(function () { $(document).delegate("#firsttable td", "click", function (event) { var columnNumber = jQuery(this).index();//get index of clicked row var colval=jQuery(this).find('div span').text()); // get the column value $("#selectedId").val(colval); //set value in the inputtext $("#selectedId").change(); //this will trigger the ajax listener }); }); 并在bean定义属性中获取输入文本值 String selectedColumn; public void onRowSelect(AjaxBehaviorEvent event) { String value=getSelectedColumn(); System.out.println(value); } 我认为 primefaces 没有任何内容可以选择列,您可能需要添加类似的内容 <h:outputText value="#{list.SDate}" > <f:ajax event="select" listener="#{bean.setSelectedColumn}"/> </h:outputText> 使用 event.getComponent() 进一步确定选择哪一列 关于 PrimeFaces DataTable、widgetVar、Javascript、jQuery: 我在使用 Primefaces widgetVar 获取 PrimeFaces 3.5 DataTable 的选定行时遇到了麻烦。 我在这里查看了 PF 来源... https://code.google.com/p/primefaces/source/browse/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/datatable/datatable.js?r=10301 ...并且还使用Chrome调试器检查DataTable,但没有找到getSelectedRow方法。 我可能错过了一些有用的东西,但这是我的技巧,它有效。 var selectedRow = Array(); $('#idForm1\\:idDT tr.ui-state-highlight').each(function(i) { $(this).children('td').each(function(ii) { selectedRow.push($(this).text()); }); }); 数组 selectedRow 填充了所选数据表行的 <td> 文本值。
如何使用 Selenium 通过 HtmlUnitDriver 单击 Primefaces 数据表表行?
这是示例代码: 导入 org.openqa.selenium.By; 导入 org.openqa.selenium.WebElement; 导入 org.openqa.selenium.htmlunit.HtmlUnitDriver; 导入 org.openqa.selenium.support.ui.ExpectedCond...
我想制作响应式模式,请帮助我。 我想制作响应式模式,请帮助我。 <p:dialog id="idModal" widgetVar="modalWV" modal="true" width="600" header="Titulo Modal"> <h:panelGrid id="panelPermisoGuardar" columns="2" cellpadding="10" width="100%" //campos </p:panelGrid> </p:dialog> 这就是我在响应式屏幕上看到它时的样子 无响应模态 我是这样解决的 首先创建对话框,其中包含一个用于字段的面板。 <p:dialog id="modal" widgetVar="modalWV" modal="true" styleClass="modalResponsivo" header="Titulo Modal"> <h:panelGrid id="idPanel" columns="2" width="100%" columnClasses="ui-g-12 ui-md-2,ui-g-12 ui-md-10" layout="grid"> </h:panelGrid> </p:dialog> 然后为 'modalResponsivo' 类添加 css 规则 @media screen and (max-width: 768px ) { .modalResponsivo { width: 90% !important;} } @media screen and (min-width: 1024px ) { .modalResponsivo { width: 30% !important; } } 这看起来像全屏 Imagen 1 这就是响应式屏幕的样子 Imagen 2 您还可以在对话框属性中使用 % <p:dialog id="gmapDialog" widgetVar="dlg" width="90%" height="500" fitViewport="true" modal="true"> <p:autoUpdate/> <p:ajax event="close" update="gmapDialog"/> <embed class="w-full h-full" src="#{lightBoxBean.url}"/> </p:dialog>
我一直在受苦并多次尝试使用教程中的primefaces创建一个非常简单的项目。我已经做了很多,但所有这些都不适合我。 他们都只插入一个
错误:jakarta.faces.view.facelets.TagAttributeException:jakarta.el.PropertyNotFoundException [重复]
在 wildfly-31.0.1.final 服务器中部署时出现错误 ERROR [nemo](默认任务 1)异常传递给 NewExceptionHandlerWrapper: jakarta.faces.view.facelets.TagAttributeException: /资源...
Jakarta 部署时发生 wildfly-31.0.1.Final 错误
ERROR [nemo](默认任务 1)异常传递给 NewExceptionHandlerWrapper: jakarta.faces.view.facelets.TagAttributeException: /resources/components/new/commandLink.xhtml @53,44 test="#(lemp...