JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
如何在 update() 调用后将自定义扩展器逻辑重新应用到 PrimeFaces p:schedule?
我在 JSF 应用程序中使用 PrimeFaces p:schedule 组件和自定义 JavaScript 扩展器,该扩展器使用 FullCalendar 中的 eventContent 属性向每个事件添加附加内容。怎么...
Quarkus uber-jar 未与 primefaces 一起运行
我使用 quarkus-primfaces-extension 将一个为 Wildfly 创建 WAR 文件(使用 JSF 和 PrimeFaces)的项目迁移到 Quarkus 应用程序。 应用程序在开发模式下运行良好,当...
我正在尝试将复选框放在树节点中。我的代码如下。 我用过富脸。 在JSP页面中: <...
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" />
我已经为 xp:input 控件设置了一个验证器类: 我已经为 xp:input 控件设置了一个验证器类: <xp:inputText id="inpTeamName" title="${strings.label_name_team_title}" value="#{teamBean.team.name}" defaultValue="#{teamBean.team.name}" required="true" validator="#{teamValidator.valName}"> <xp:this.attrs> <xp:attr name="placeholder" value="#{strings.label_name_team_ph}"> </xp:attr> </xp:this.attrs> <xp:this.validators> <xp:validateRequired loaded="true" message="#{strings.teamValidateNameEmpty}"> </xp:validateRequired> <xp:validateLength minimum="6" message="#{strings.teamValidateNameTooShort}"> </xp:validateLength> </xp:this.validators> </xp:inputText> <xp:panel> <small id="infoHelp" class="form-text text-muted"> <xp:text value="${strings.label_name_team_helper}" /> </small> </xp:panel> 这是 TeamValidator 类中的方法(作为托管 bean 访问): public void valName(FacesContext facesContext, UIComponent component, Object value) { String methodName = new Object(){}.getClass().getEnclosingMethod().getName(); utils.printToConsole(this.getClass().getSimpleName().toString() + " " + methodName); try { if (value.toString().replaceAll("\\s+","").equals("")){ String msg = propStrings.getProperty("teamValidateNameEmpty"); FacesMessage message = new FacesMessage(msg); throw new ValidatorException(message); } //check for duplicate name for team for event String qParam = utils.getUrlParameterValue("unid"); TeamBean teamBean = new TeamBean(); ArrayList<JsonJavaObject> teams = teamBean.loadObjects(); boolean duplicateFound = false; for (JsonJavaObject team : teams) { String key = "team"; if (team.containsKey(key)) { String name = team.getAsString(key).replaceAll("\\s+",""); if (value.toString().replaceAll("\\s+","").equals(name)){ duplicateFound = true; } } } if (true == duplicateFound ) { String msg = propStrings.getProperty("teamValidateNameDuplicate"); FacesMessage message = new FacesMessage(msg); throw new ValidatorException(message); } } catch (Exception e) { XspOpenLogUtil.logErrorEx(e, JSFUtils.getXSPContext().getUrl().toString(), Level.SEVERE, null); } } 如果我添加一些打印语句,我会发现它检测到重复项,并且应该抛出验证器异常。但该消息不会出现在屏幕上(我添加了 xp:messages 控件)。 所需和长度的验证确实出现在屏幕上。 我还看到触发验证器(保存文档)的代码未被验证禁止。 我想知道我在这里做错了什么? 仅供参考,inputput 控件驻留在 xe:dialog 控件中。 您抛出的 ValidatorException 被同一方法中的 try/catch 捕获。所以删除 try/catch。
我计划开发一个中型到大型Web应用程序,使用JSF(加上PrimeFaces或其他)作为视图层,使用EJB3作为业务逻辑。我们选择 EJB3 而不是更轻量级的原因......
我想创建具有可单击行的 JSF 表。例子: 我想创建具有可单击行的 JSF 表。示例: <h:column> <f:facet name="header"> <h:commandLink value="User name" actionListener="#{bean.sort}" style="text-decoration:none;"> <f:ajax render="@form" /> </h:commandLink> </f:facet> <h:commandLink value="#{item.userName}" action="#{accounts.pageRedirect}" style="text-decoration:none;"> <f:setPropertyActionListener target="#{accounts.sessionValue}" value="#{item.number}" /> </h:commandLink> </h:column> 但是当我有空单元格时,行会缩小。我尝试过这个解决方案 table { empty-cells: show; } http://www.cs.tut.fi/~jkorpela/HTML/emptycells.html 但根据文章,它不适用于 IE。所以我需要使用 如果值为空,如何在 h:commandLink value="#{item.userName}" 中实现一些逻辑来打印 ? P.S 我想我需要这样的东西: value="#{item.number == null ? : item.number}" 您需要使用 rendered 属性来有条件地显示内容: <h:column> <h:commandLink value="#{item.userName}" action="#{accounts.pageRedirect}" style="text-decoration:none;" rendered="#{item.number != null}"> <f:setPropertyActionListener target="#{accounts.sessionValue}" value="#{item.number}" /> </h:commandLink> <h:outputText value=" " rendered="#{item.number == null}" /> </h:column> 另请参阅以下链接以了解为什么我将 替换为  : 如何在 JSF 页面中插入不间断空格字符? 错误解析/page.xhtml:错误跟踪[行:42]实体“nbsp”被引用,但未声明
Hibernate 抛出错误:在 MySQL 数据库中找不到表“USERS”
我目前正在为我的应用程序开发登录和注册功能,并且我正在尝试连接到我的 MySQL 数据库。但是,我面临一个问题,应用程序报告数据...
我需要关闭 Icefaces 日志记录。我已经添加了记录器引用,如下所示,但我无法关闭 Icefaces 日志记录。
java.lang.ClassNotFoundException:jakarta.enterprise.inject.spi.el.ELAwareBeanManager
我目前正在将项目从 Java 11 迁移到 Java 17,从 Spring 5 迁移到 Spring 6,以及从 RichFaces 迁移到 PrimeFaces 14(雅加达)。进行必要的更改后,我遇到以下情况
在 WildFly 21 上无法使用 JSF 2.2 访问 CDI 支持 Bean
我一直在按照本教程在 Windows 10 上的 Wildfly-21.0 服务器上使用 JAVA-14 和 Maven 在 Eclipse 版本 2020-09 (4.17.0) 上设置 JSF。完成页面上的说明后,我可以
我正在创建我的第一个项目 Java EE 7,但我遇到了麻烦。感谢任何帮助。 雄猫7.0.34 JSF 2.2 Primefaces 3.5 javaee-api-7.0.jar 当应用程序启动时,Tomcat 日志显示
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 编译器可以实现