JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
JSF CRUD Netbeans 教程 - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表中插入标识列的显式值
我正在学习本教程,您可以直接从数据库创建 JSF CRUD 应用程序(从数据库生成实体类,然后从实体类生成 JSF 页面)。 当我尝试...
我正在使用 eclipse 创建我的 jsf 项目。 我创建了自己的组件,并且我不希望其他程序员能够使用 jsf 常规组件,例如 h:inputtext 等。 我怎样才能做到
在 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 我们根据升级进行了更改,例如命名空间更改和属性值更改
我有一张受保护的地图>动物;在我的课堂上。在我的构造函数中,我有 Animals.put("狗", new ArrayList()); Animals.put("猫", ...
很多次我都遇到这样的错误: -标签未关闭(xml错误) -xhtml 有重复的 id 我想编写验证器来检查文件中是否存在这些错误。我打赌有一些 Facelets 编译器可以实现
使用 PrimeFaces 和 OpenPDF 导出 PDF 时出现 NoSuchMethodError
我正在开发一个 JSF 应用程序,使用 PrimeFaces 14.0.3 进行 PDF 导出。 我正在开发一个 JSF 应用程序,使用 PrimeFaces 14.0.3 进行 PDF 导出。 <p:commandButton id="btnPdf" class="m-1 ui-button-info" ajax="false" rendered="true" icon="fas fa-file-pdf" value="Export as PDF"> <p:dataExporter type="pdf" target="tbl" fileName="processional_fees" /> </p:commandButton> 尝试将 DataTable 导出为 PDF 时,遇到以下错误: WARNING: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception java.lang.NoSuchMethodError: 'com.lowagie.text.pdf.PdfPCell com.lowagie.text.pdf.PdfPTable.addCell(com.lowagie.text.pdf.PdfPCell)' at org.primefaces.component.datatable.export.DataTablePDFExporter.addCell(DataTablePDFExporter.java:165) ... 这是我的 pom.xml 中用于 PDF 处理的相关部分: <dependency> <groupId>com.github.librepdf</groupId> <artifactId>openpdf</artifactId> <version>1.4.1</version> </dependency> 我还根据 PrimeFaces 文档的初步建议尝试使用 openpdf 版本 2.0.3,该文档列出了用于 PDF 导出的 openpdf 1.4.1。但是,两个版本中都存在该错误。 我的环境包括: PrimeFaces 14.0.3 JSF 2.3 Java 11 帕亚拉5 我正在寻找有关如何解决此 NoSuchMethodError 的指导。这是我的问题: 用于 PDF 导出的 openpdf 和 PrimeFaces 14.0.3 是否存在已知的兼容性问题? 我的项目中是否存在其他依赖项会干扰 PDF 生成? PrimeFaces 或 openpdf 中是否需要其他配置才能正确处理 PDF 导出? 任何帮助或见解将不胜感激! 对我来说这个错误很可疑 java.lang.NoSuchMethodError:'com.lowagie.text.pdf.PdfPCell com.lowagie.text.pdf.PdfPTable.addCell(com.lowagie.text.pdf.PdfPCell)' 在 PR837 中:修改了 PdfPTable 添加单元格方法以返回单元格,进行了重大更改,以便在调用 com.lowagie.text.pdf.PdfPCell 时返回 addCell。它与 1.4.x 版本集成。所以它肯定应该存在于 1.4.1 或 1.4.2 中 根据错误,它找不到这样的方法签名。因此,我假设您的设置中的某些内容弄乱了依赖项,并引入了一个没有此重大更改的 com.github.librepdf 版本(可能是 1.3.X 版本) OpenPDF 自述文件下的依赖项说 2.0.x 分支需要 Java 17 或更高版本。 1.4.x 分支需要 Java 11 或更高版本。 1.3.x 分支需要 Java 8 或更高版本。 所以我希望 2.0.3 根本不起作用,因为您为您的环境列出了 Java 11。
我在 primefaces 中使用流式内容并使用媒体标签来显示它。当在查看器中按下下载按钮时,它会下载名为dynamiccontent.properties的文件。有什么办法
Primefaces 本机上传不适用于 PrettyFaces(OCPSoft 重写)
我需要将我的应用程序迁移到 Jakarta EE 10,以下是我当前的配置: JDK 1.8 Primefaces 12.0.x 漂亮面孔 3.3.3 我已经用新的依赖项更新了我的 pom.xml,替换了
迁移到 Jakarta EE 后,Control+单击 Facelets 中的 EL 表达式在 Eclipse 中不起作用
我最近将项目从javax迁移到Jakarta EE v10,jdk 11到17,以及Tomcat 10.1,primefaces v13 在早期的项目中,当我打开 .xhtml 文件,按下 control 并单击任何 java c...
Primefaces 自动完成转换器类似于omnifaces.SelectItemsConverter
我正在使用 primefaces 开发一个网络应用程序。我有一个自动完成字段,它从 pojo 对象获取其值。我想知道是否有类似omnifaces的转换器解决方案。
我有一个 JSF 应用程序,我正在将其转换为使用 Web 服务而不是直接的数据库查询。有一些非常长的列表,以前可以通过简单的...
从 PrimeFaces 8 更新到 10 后,我的应用程序中的所有自动完成组件在打开下拉菜单时均不显示值 该列表仍为空。当我调试到自动完成时......
我正在尝试有条件地渲染 ,因此我无法使用 ,因为它将渲染为 或 我当前的(工作)方法如下: 我正在尝试有条件地渲染 <tr>,因此我无法使用 <h:panelGroup>,因为它将渲染为 <span> or <div> 我目前的(工作)方法如下: <h:outputFormat rendered="#{negotiator.maySend}"> <tr> my tr stuff </tr> </h:outputFormat> 这可行,但我不确定这是否是滥用<h:outputFormat>的方式 - 之前我使用过<h:outputLabel>,但这在IE中呈现为<label>。 我也阅读了这个问题的答案,但如上所述,它们对我不起作用,因为<tr>:如何不在 JSF 中渲染整个块? 我无法使用 <h:panelGroup>,因为它会渲染为 <span> 或 <div> 显然你没有仔细测试。如果您不指定最终应在客户端出现的属性,则 <h:panelGroup> 将不会渲染任何内容,例如 layout、id、styleClass 等。 因此,这在技术上应该可以完美地工作。 <h:panelGroup rendered="#{negotiator.maySend}"> <tr> my tr stuff </tr> </h:panelGroup> 但是,更好的主要目的是使用 <ui:fragment>。 <ui:fragment rendered="#{negotiator.maySend}"> <tr> my tr stuff </tr> </ui:fragment> 顺便说一句,这也可以通过 <f:verbatim> 实现,但自 JSF 2.0 起已弃用,因为它是专门为在 JSP 中使用而设计的。 另请参阅: JSF 中 ui:fragment 的替代品 有条件地显示 JSF 组件 如何找出用于ajax更新/渲染的组件的客户端ID?找不到带有从“bar”引用的表达式“foo”的组件 Ajax 更新/渲染不适用于具有渲染属性的组件 实现此目的的一种方法是将表格行的显示样式设置为无。如果满足你的条件,然后使用javascript将样式设置为table-row。 像这样: <tr id="tableRow" style="display: none;"> my tr stuff </tr> JS: const show = true; // Do some logic here if (show) { document.getElementById("tableRow").style.display = "table-row"; }
如何在 Firefox 上从 Controler 调用 javaScript?
我正在尝试从 bean 调用 JavaScript。脚本工作正常,但是当尝试从 bean 运行它时出现错误: Uncaught ReferenceError: funkcjaKolorujPredkosc is not Defined 导入到xml: &l...
IceFaces 3.3.0 ace:带有图像的按钮。怎么办?
我一直在努力尝试将图像添加到 IceFaces 按钮。 我的最后一次尝试是添加嵌套到按钮标签的图像,如下所示: 我一直在努力尝试将图像添加到 IceFaces 按钮。 我的最后一次尝试是添加嵌套到按钮标签的图像,如下所示: <ace:pushButton actionListener="#{logoutCtrl.logout()}"> <h:graphicImage value="img/logout.png" width="20px" height="20px"/> </ace:pushButton> 但不幸的是它没有起作用。页面显示没有标签的按钮,然后是图像,例如: 我找到了这个链接,他们提到它应该从 2.x 版本开始修复,所以我可能做错了什么。 P.S - 我通常会使用 Prime Faces,但在这种情况下我别无选择。 我遇到了类似的问题,但使用的是 ICEFaces 4。在我的情况下,图像将显示在按钮旁边。我想,我可以在 CSS 中设置按钮的样式。相反,我只是用标准 JSF h:commandButton 组件替换了 ace:pushButton 元素。 h:commandButton 有一个图像属性。这是一个例子: <h:commandButton image="#{resource['images:searchIcon.png']}" action="#{myBean.performSearch}"> <f:param name="callback" value="sessionSearch"/> </h:commandButton> 希望这可以帮助别人。
有时我看到 JSF URL 是 *.jsf,有时是 *.xhtml,有时是 /faces/*。为什么?
一直在尝试学习JSF,有时我看到URL是*.jsf,有时是*.xhtml或/faces/*。有人可以补充我的知识吗?当我使用 Facelet 创建 JSF 时,文件扩展名是 .xh...
我需要复制树中的数据以方便用户使用。由于某种原因无法选择文本。 我需要复制树中的数据以方便用户使用。由于某种原因无法选择文本。 <p:tree id="tree" value="#{valid.value}" var="var" > <p:treeNode collapsedIcon="pi pi-folder"> <p:outputLabel value="#{valid.label}"/> <p:treeNode/> <p:tree/> 我只能在整个树被禁用时选择文本。 我也尝试过设置一些CSS组件,如z-index、指针事件、用户选择、光标等,但似乎没有什么相关的。 我不太清楚 JSF 如何创建这些组件,因为我还是个新手。我很确定禁用状态下发生了一些事情,允许树的渲染执行其他操作。 当您开始从树外部选择时,您可以选择数据,这可能不是您想要的。 我将创建一个按钮,允许用户使用一些 JavaScript 使用 navigator.clipboard.writeText 将文本复制到剪贴板。 请注意,您可以使用 OmniFaces escapeJS 转义要在 EL 中复制的文本。