PrimeFaces是一个JSF(Java Server Faces)组件库,附带了大量丰富的组件,这些组件利用了jQuery和jQuery UI。它支持jQuery UI ThemeRoller CSS框架和FontAwesome图标集。请注意,此标签不应与[PrimeNG]结合使用。
我正在尝试构建一个具有多个子表的 primefaces 数据表。 其关系如下。 供应商可以有多个采购订单。采购订单可以有多行...
导致以下情况的更改(PrimeFaces 8 到 10)的原因是什么:“PanelGrid ...没有‘列’属性需要至少一个 <p:row> 元素”?
我本质上是在尝试缩小代码中导致此错误的确切位置。该代码在 PrimeFaces 8.0 上运行没有任何问题,但从 PrimeFaces 10.0.0 开始,我收到以下消息...
我正在使用 PrimeFaces 3.2.2 开发一个项目,我想在表单中使用 p:fieldset。我在文档中看到图例默认情况下与左侧对齐,我遇到的问题是
我正在使用 PrimeFaces 3.2.2 开发一个项目,我想在表单中使用 p:fieldset。我在文档中看到图例默认情况下与左侧对齐,我遇到的问题是
我想通过Javascript填充Primefaces inputText字段并触发更改事件。根据我对 inputText 小部件文档的理解,callBehavior 函数将是...
我有一个带分页的数据表,我想使用数据表外部的命令链接更改当前页面,如何获取它? 我有一个带分页的数据表,我想使用数据表外部的命令链接更改当前页面,如何获取它? <p:commandLink title="changePage" action="#{myBean.changeMethod}" update="myDataTable" /> <p:dataTable id="myDataTable" var="myItem" paginator="true" rows="1" value="#{myBean.ListOfItem}" binding="#{myBean.DataTable}"> ... ... </p:dataTable> 您好! 这会将表格的页面设置为第一页 public void changeMethod() { final DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot() .findComponent("myDataTable"); int first = 0; d.setFirst(first); } 或者在客户端: widgetVar.getPaginator().setPage(pageindex); 编辑:“first”属性表示要显示的第一行的索引 没关系,但现在在客户端的 primefaces 5.1 中你必须这样做: PF('widgetVar').getPaginator().setPage(pageindex); 对我来说效果很好,但你必须输入整个组件名称 FacesContext.getCurrentInstance().getViewRoot().findComponent("form:panel:datatable"); 对我来说这段代码有效 PrimeFaces.current().executeScript("PF('widgetVarId').getPaginator().setPage(1)");
我正在使用 Eclipse-Juno 并尝试遵循从 xhtml 到 Bean 类的 JSF 代码,但我无法在我的工作空间中获得该功能。 例如: 当我在标题中使用 Ctrl+鼠标指针时,它是...
当我偶然发现这个问题时,我正在摆弄 primefaces 组件...... 我有一个示例页面,其中包含以下内容, 当我偶然发现这个问题时,我正在摆弄 primefaces 组件...... 我有一个示例页面,其中包含以下内容, <h:form> <p:panel id="p1"> <p:commandButton value="display" actionListener="#{myTestBean.display}" update="p2"> </p:commandButton> </p:panel> <p:panel id="p2" rendered="#{myTestBean.show}"> <p:inputText value="#{myTestBean.val1}" id="t1"></p:inputText> <p:inputText value="#{myTestBean.val2}" id="t2"></p:inputText> <p:commandButton value="click me" update="@form" action="#{myTestBean.disply}"></p:commandButton> </p:panel> </h:form> 我的支持 bean 包含以下内容, public class Testbean implements Serializable { private String val1; private String val2; private boolean show; //getters and setters for the above... public void display(){ if(show == false){ setShow(true); } } public void disply(){ System.out.println("I am here"); val1 = "hi"; val2 = "hello"; if(show == false){ setShow(true); } } } 现在,这里的问题是,当我单击第一个按钮(显示)时,下面的面板(p2)会正确渲染。但是,当我单击第二个按钮(单击我)时,面板会被隐藏,并且单击第二个按钮时,它永远不会转到支持 bean 方法“disply()”。 我在第二个按钮中使用了动作侦听器,但同样的行为。另外,我在第二个按钮中给出了 update =“p2”,即使这样也没有产生我想要的结果。 有人可以帮我解决这个问题并让我知道我做错了什么地方吗? 谢谢你。 需要将 bean 放置在视图范围中,以便记住同一视图上所有先前的 (ajax) 操作。 @ManagedBean @ViewScoped public class TestBean { // ... } 当 bean 被放置在请求作用域中时,boolean show 将被重新初始化为默认的 false,因此 rendered 属性将在 JSF 寻找要调用的操作方法时评估 false,因此永远不会找到并调用操作方法。 另请参阅: 如何选择合适的bean范围? commandButton/commandLink/ajax 操作/侦听器方法未调用或输入值未更新 我将按钮包围起来,如下图所示 <h:form> <h:commandButton styleClass="toggle_btn" action="#{buttonNavBean.show()}" style=" font-family: sans-serif; color: black;" value="Sign In/Sign Up"></h:commandButton> </h:form> 我也面临着同样的挑战。我试图在网上搜索,但一切都是徒劳。但经过几次尝试,我发现,由于我使用commandButton来设置渲染面板的值,因此无法计算出UIForm,因此,我用包围了commandButton UIForm并且它按照我想要的方式正常工作。 当使用actionListener =“#{myTestBean.display}”时,backinbean方法应该是 公共无效显示(ActionEvent事件){ if(show == false){ setShow(true); } } 必须声明 ActionEvent 参数
如何使用延迟加载和分页查询Primefaces dataTable的数据
在我的 JSF 数据表中,我实现了延迟加载,当我对记录进行分页时,执行下一组记录需要大约 4 或 5 秒的时间,实际上应该花费不到
将 PrimeFaces 6.2 升级到 12 后,<p:messages autoUpdate="true"> 不再显示
我们已将 JSF 从 2.2 升级到 JSF-4.0 (jakarta-faces-4.0.5) 和 Primefaces 从 6.2 到 12.0.0-jakarta 我们根据升级进行了更改,例如命名空间更改和属性值更改
如何在 update() 调用后将自定义扩展器逻辑重新应用到 PrimeFaces p:schedule?
我在 JSF 应用程序中使用 PrimeFaces p:schedule 组件和自定义 JavaScript 扩展器,该扩展器使用 FullCalendar 中的 eventContent 属性向每个事件添加附加内容。怎么...
Quarkus uber-jar 未与 primefaces 一起运行
我使用 quarkus-primfaces-extension 将一个为 Wildfly 创建 WAR 文件(使用 JSF 和 PrimeFaces)的项目迁移到 Quarkus 应用程序。 应用程序在开发模式下运行良好,当...
Jakarta PrimeFaces 'p:commandButton' 不会执行我的 'action(Listener)'
Jakarta JavaFaces 'h:commandButton'(确定): Jakarta JavaFaces 'h:commandButton'(确定): <h:form id="form"> <h:commandButton value="h:doButtonActionListener" process="@this" actionListener="#{beWhereWhenController.doButtonActionListener()}"/> ... </> 控制器: @Named("beWhereWhenController") @RequestScoped public class BeWhereWhenController { ... public void doButtonActionListener() { System.out.println(">>>>> doButtonActionListener ....."); } } 显示: INFO [stdout] (default task-4) >>>>> doButtonActionListener ..... ... 但是使用 'PrimeFaces' 'p:commandButton': <p:commandButton value="p:doButtonActionListener" process="@this" actionListener="#{beWhereWhenController.doButtonActionListener()}"/> 什么也不显示! 使用: PrimeFaces Jakarta 14.0.6 WildFly Distribution - 34.0.0.Final Jakarta EE 11.0.0-M4 Jakarta Faces 4.1.1 Mojarra 4.1.0 JDK 23.0.1 macOS Sequoia 15.1 (UNIX) 看过: 了解 PrimeFaces 流程/更新和 JSF f:ajax 执行/渲染属性 commandButton/commandLink/ajax 操作/侦听器方法未调用或输入值未设置/更新 没有表现出任何明显的东西。 h:commandButton 适用于 Mojarra,但 p:commandButton 不适用于。 蒂亚 修复: ajax="false" <p:commandButton value="p:doButtonActionListener actionListener" actionListener="#{beWhereWhenController.doButtonActionListener()}" ajax="false" process="@this" />
我正在使用 Primefaces 5.2。 在我的页面上,我有几个具有相同列和相同 sortBy 表达式的 p:datatable。 像这样的东西: 我正在使用 Primefaces 5.2。 在我的页面上,我有几个具有相同列和相同 sortBy 表达式的 p:datatable。 类似: <p:dataTable .. id="tab1"> <p:column sortBy="#{prop1}"> #{prop1} </p:column> </p:dataTable> <p:dataTable .. id="tab2"> <p:column sortBy="#{prop1}"> #{prop1} </p:column> </p:dataTable> 到目前为止,排序工作正常,但如果我对其中一个表(我们称之为表 A)进行排序,然后刷新页面(例如,通过触发 h:commandButton),我会得到奇怪的行为,最后会出现 NullPointerException。在这种情况下,所有表都突出显示与表 A 相同的列。此外,一旦我对表 A 以外的表进行排序,就会发生以下异常: 21:33:36,149严重javax.enterprise.resource.webcontainer.jsf.application(默认任务25)渲染视图错误[/stocks.xhtml]:java.lang.NullPointerException 在 org.primefaces.component.datatable.DataTable.findColumnInGroup(DataTable.java:905) [primefaces-5.2.jar:5.2] 在 org.primefaces.component.datatable.DataTable.findColumn(DataTable.java:896) [primefaces-5.2.jar:5.2] 在 org.primefaces.component.datatable.DataTable.getSortColumn(DataTable.java:1401) [primefaces-5.2.jar:5.2] 在 org.primefaces.component.datatable.feature.SortFeature.singleSort(SortFeature.java:136) [primefaces-5.2.jar:5.2] 在 org.primefaces.component.datatable.DataTableRenderer.preRender(DataTableRenderer.java:109) [primefaces-5.2.jar:5.2] 在 org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83) [primefaces-5.2.jar:5.2] 在 javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104) [jsf-impl-2.2.8-jbossorg-1.jar:] 在 com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:621) [jsf-impl-2.2.8-jbossorg-1.jar:] 在 com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:1110) [jsf-impl-2.2.8-jbossorg-1.jar:] 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 javax.faces.render.Renderer.encodeChildren(Renderer.java:176) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8] 在 com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456) [jsf-impl-2.2.8-jbossorg-1.jar: 解决方案是在包含其他表的表中添加 rowStatePreserved="true"。这是在 Primefaces 5.1.14 中添加的,是 JSF 2.1 的一部分。 鸣谢:sdjavaudvk (http://forum.primefaces.org/viewtopic.php?f=3&t=43441)。 <p:dataTable id="tab1" var="resumo" value="#{resumoView.resumos}" rows="20" paginator="true" rowsPerPageTemplate="5,10,15,20" rowStatePreserved="true"> ... 您是否尝试过为每个数据表使用不同的表单?像这样: <h:form> <p:dataTable id="tab1"> ... </p:dataTable> </h:form> <h:form> <p:dataTable id="tab2"> ... </p:dataTable> </h:form> 我们在Primefaces6.0上遇到了同样的问题。 我们有一个包含两个表的表单,并且可以通过值列表(filterMatchMode 精确)或通过输入文本(filterMatchMode 包含)过滤特定列。 第一个表没有工作过滤器(我们遇到了与您相同的 NullPointerException),第二个表工作正常。 这两个表在一个组件中,两个表中过滤和排序的列是使用 JSTL 有条件构建的,如下所示: <c:choose> <c:when test="#{cc.attrs.filterOperatorExact}"> <p:column headerText="Header name" sortBy="#{vector.operatorForDisplay}" filterBy="#{vector.operatorForDisplay}" filterMatchMode="exact" filterOptions="#{cc.attrs.filtersOperatorList}"> <h:outputText value="#{vector.operatorForDisplay}" /> </p:column> </c:when> <c:otherwise> <p:column headerText="Header name" sortBy="#{vector.operatorForDisplay}" filterBy="#{vector.operatorForDisplay}" filterMatchMode="contains"> <h:outputText value="#{vector.operatorForDisplay}" /> </p:column> </c:otherwise> </c:choose> 使用“JSF方式”对渲染的属性执行此操作,问题消失了: <p:column headerText="Header name" sortBy="#{vector.operatorForDisplay}" filterBy="#{vector.operatorForDisplay}" filterMatchMode="exact" filterOptions="#{cc.attrs.filtersOperatorList}" rendered="#{cc.attrs.filterOperatorExact}"> <h:outputText value="#{vector.operatorForDisplay}"/> </p:column> <p:column headerText="Header name" sortBy="#{vector.operatorForDisplay}" filterBy="#{vector.operatorForDisplay}" filterMatchMode="contains" rendered="#{not cc.attrs.filterOperatorExact}"> <h:outputText value="#{vector.operatorForDisplay}"/> </p:column> 希望有帮助。
我正在使用 primefaces 开发一个网络应用程序。我正在使用数据表,每次将鼠标移到表中时,底部都会出现一个滚动条,偶尔会出现在右侧。我不想要或不需要
Spring Security 6:静态资源未在登录页面加载
我正在使用 Spring Security 6 和 Java 17 开发 Spring Boot 应用程序。我的静态资源(CSS、JS、图像)未在登录页面上加载。这些资源位于资源下
我目前正在将项目从 Java 11 迁移到 Java 17,从 Spring 5 迁移到 Spring 6,以及从 RichFaces 迁移到 PrimeFaces 14(雅加达)。进行必要的更改后,我遇到以下情况
在 Primefaces 5.1(Tomcat 8 和 Servlet 3.0)中,您可以使用 DataGrid、DataList、DataTable 等迭代 List。例如: 在 Primefaces 5.1(Tomcat 8 和 Servlet 3.0)中,您可以使用 DataGrid、DataList、DataTable 等进行迭代 List<Objects>。例如: <p:dataTable var="car" value="#{dtBasicView.cars}"> <p:column headerText="Id"> <h:outputText value="#{car.id}" /> </p:column> </p:dataTable> 控制器: @ManagedBean(name="dtBasicView") @ViewScoped public class BasicView implements Serializable { private List<Car> cars; @ManagedProperty("#{carService}") private CarService service; @PostConstruct public void init() { cars = service.createCars(10); } public List<Car> getCars() { return cars; } public void setService(CarService service) { this.service = service; } } 但是假设 Car 对象具有像 washes 这样的属性,那么当我这样做时: <h:outputText value="#{car.washes}" /> 在数据表中,它返回一个 List<Washes> 列表。我无法选择索引,那么如何迭代数据表中的 List<Washes>? 我知道我可以在数据表中创建一个数据网格,然后对汽车执行相同的操作以迭代洗涤列表。但这会创建一个新的“HTML 表格,其中一个单元格内有边框”。我怎样才能迭代列表并输出清洗中的字符串:#{washes.foo} 更新:根据答案尝试使用<ui:repeat>时出现此错误: Property 'foo' not found on type org.hibernate.collection.internal.PersistentSet 当我使用 <p:dataGrid> 而不是 <ui:repeat> 时,它起作用了。 另外,我返回的是一个集合而不是列表,所以我必须使用 toArray() 您可以嵌套另一个迭代组件,就像在普通 Java 中嵌套 for 循环一样。 这是嵌套另一个 <p:dataTable> 的示例,假设 Wash 具有属性 foo: <p:dataTable value="#{bean.cars}" var="car"> <p:column headerText="Washes"> <p:dataTable value="#{car.washes}" var="wash"> <p:column headerText="Foo">#{wash.foo}</p:column> </p:dataTable> </p:column> </p:dataTable> 如果您想要无标记/无样式迭代,请使用 <ui:repeat> 或也许 <h:dataTable>: <p:dataTable value="#{bean.cars}" var="car"> <p:column headerText="Washes"> <ui:repeat value="#{car.washes}" var="wash"> #{wash.foo} </ui:repeat> </p:column> </p:dataTable> 顺便说一下,使用复数作为类名是很奇怪的,而你可以在一个 List 中使用多个类名。您可能想将 Washes 重命名为 Wash。上面的代码片段已经考虑到了这一点。您会发现,通过这种方式,代码变得更加自我记录。 根据您的错误更新; <ui:repeat> 和 <h:dataTable> 组件不支持迭代 Set<E>。该支持将在未来的 JSF 2.3 版本中提供。如果不能用 Set<E> 替换 List<E>,那么只需从中获取一个数组,如下所示: <ui:repeat value="#{car.washes.toArray()}" ...>
我需要在某些情况下禁用 PrimeFaces 树(复选框选择模式)。用户应该能够看到选定和未选定的复选框,但需要禁用它们...
升级 JSF 和 Primefaces 验证消息后无法正常工作
我们已将 JSF 从 2.2 升级到 JSF-4.0 (jakarta-faces-4.0.5) 以及 Primefaces 从 6.2 到 12.0.0-jakarta 我们根据升级进行了更改,例如命名空间更改和属性值更改