JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
在用 PrimeFaces 填充 inputText 后如何从 ComboBox 中选择一个项目?
我有一个“注册”页面,用户在其中填写一些信息,包括一些银行帐户信息。 用户可以通过两种方式选择银行(并从该银行加载信息): 他可以选择...
java.lang.IllegalStateException无法找到工厂javax.faces.context.FacesContextFactory的备份[重复]
我对 JSF 开发完全陌生,在部署到 Tomcat 9.0.80 时遇到以下异常: 2023 年 8 月 27 日 22:34:59.067 严重 [RMI TCP 连接(2)-127.0.0.1] org.apache.catalina。
我对 JSF 开发完全陌生,在部署到 Tomcat 9.0.80 时遇到以下异常: 2023 年 8 月 27 日 22:34:59.067 严重 [RMI TCP 连接 (2)-127.0.0.1] org.apache.catalina.c...
将 JSF 2.3 应用程序部署到 Tomcat 9.0.80 时出现异常
我对 JSF 开发完全陌生,在部署到 Tomcat 9.0.80 时遇到以下异常: 2023 年 8 月 27 日 22:34:59.067 严重 [RMI TCP 连接 (2)-127.0.0.1] org.apache.catalina.c...
FacesContext 和ExternalContext 有什么区别
FacesContext 和ExternalContext 有什么区别?我什么时候可以使用其中一种或另一种?其中之一是什么,另一个又是什么? 以下示例来自《JavaServer Faces 第三版》一书...
PrimeFaces ui-state-error 未添加到 Mojarra 4.0.3 的复合组件中
虽然我向对话框中的输入文本添加了必需的属性,但它没有添加 ui-state-error。我在 PrimeFaces 12 和 PrimeFaces 13 之前没有遇到这样的问题。我应该如何遵循有关
Primefaces 13.0.0 ui-state-error 未添加到对话框中
虽然我向对话框中的输入文本添加了必需的属性,但它没有添加 ui-state-error。我在 PrimeFaces 12 和 PrimeFaces 13 之前没有遇到这样的问题。我应该如何遵循有关
我有一个在数据表中加载信息的commandLink,逻辑是当变量showPopup为true时,它会显示一个弹出窗口,否则不显示它。变量发生变化
我正在尝试使用primefaces 4.0的可选数据表,但所选对象始终为空。 我已经厌倦了像这里和这里所说的那样添加 rowKey,但仍然为空...... 这是我的页面: 我正在尝试使用 primefaces 4.0 的可选数据表,但所选对象始终为空。 我已经厌倦了像here和here所说的那样添加rowKey,但仍然为空... 这是我的页面: <p:dataTable id="appDetailTable" var="appDetail" value="#{newAppraiseBean.appDetailDataModel}" paginator="true" rows="5" paginatorPosition="bottom" selection="#{newAppraiseBean.selectedAppDetail}" rowKey="#{appDetail.appraiseDetailID}" selectionMode="single"> <p:ajax event="rowSelect" listener="#{newAppraiseBean.modifyAppDetail()}" oncomplete="newAppDlg.show();" update=":newAppraiseForm:newAppDetail"/> </p:dataTable> 在我的支持豆中: newAppraiseBean.modifyAppDetail():(只需打印所选项目) public void modifyAppDetail(){ System.out.println("modify, selectedAppDetail:"+selectedAppDetail); } 数据模型: private class AppraiseDetailDataModel extends ListDataModel<Appraisedetail> implements SelectableDataModel<Appraisedetail> { public AppraiseDetailDataModel(List<Appraisedetail> list) { super(list); } @Override public Object getRowKey(Appraisedetail t) { return t.getAppraiseDetailID(); } @Override public Appraisedetail getRowData(String string) { List<Appraisedetail> appList=(List<Appraisedetail>) getWrappedData(); for(Appraisedetail app:appList){ System.out.println(app.getAppraiseDetailID()); if(app.getAppraiseDetailID()==Integer.parseInt(string)){ return app; } } return null; } } 它总是打印 null,我不知道我错过了什么。 更新 我简化了我的代码并将其放在google Drive上。 这是netbean项目的压缩包,解压后可以直接用netbean打开。 当然,在我简化代码后问题仍然存在。 我仔细检查代码后解决了问题。 我发现我没有指定appraiseDetailID,也就是rowKey。 我没有指定它,因为我希望数据库在数据插入数据库时生成id。 而 getRowKey 方法总是获取 null,因为数据还没有插入到 DB,当然 id 还没有生成。 随后,primefaces 在想要 getObject 且 rowKey 为“null”时什么也得不到。 所以,在我自己指定 id 后,一切正常! 对于遇到同样问题的人,记得指定rowKey,以便你可以使用可选择的数据表。 试试这个: if(app.getAppraiseDetailID().toString().equals(rowkey)) { ... 而不是你拥有的。 AppraiseDetailDataModel 还必须实现可序列化。同时删除“()”: listener="#{newAppraiseBean.modifyAppDetail()}" 最后,确保监听器的方法签名为: public void modifyAppDetail(SelectEvent event) 您可以在该方法中设置断点并检查 event.getObject(),它应该引用所选行。 尽管我已经正确识别了对象列表,但我正在处理同样的问题。就我而言,我忘记将 dataTable 包裹在 form 中。 <h:form> <p:dataTable> ... </p:dataTable> </h:form>
我是 JSF 新手。我有一个无序列表和一个 div。 测试页 我是 JSF 新手。我有一个无序列表和一个 div。 <ul class="nav navbar-nav"> <li><a href="#TestPage">Test Page</a></li> <li><a href="#">Item1</a></li> <li><a href="#">Item2</a></li> <li><a href="#">item3</a></li> </ul> <div id="content"></div> 现在单击列表项,我想使用 JSF 加载不同的 xhtml 页面。是否有可能实现这个用例?我正在使用 JSF 2.0 和 primefaces。 只需将纯 HTML 链接替换为 JSF h:link。根据文档: 渲染 HTML“a”锚元素。组件的值呈现为锚文本,组件的结果用于确定“href”属性中呈现的目标 URL。 <li><h:link outcome="TestPage" value="Test Page" /></li> 其中 outcome 属性指定目标导航情况。 另请参阅: JSF 2 中的隐式导航 请注意,这对于使用 JSF 导航案例很有用。如果您只想对外部非 JSF url 执行 GET 请求,只需使用纯 HTML 方式即可。 在 click 元素的 <li> 事件上,您可以调用 $('#content').load(Url, successEventHandler)
如何添加监听器到p:fileUpload中的Choose按钮
是否可以为FileUpload组件中的“选择”按钮添加监听器? 我在高级模式下使用 p:fileUpload 。 我浏览了文档,它只支持 fileUploadListener
未捕获的引用错误:当 javax.faces.PROJECT_STAGE 为 Production 时,未定义 mojarra
免责声明 尽管这个问题被问了好几次,但没有人能够解决我的问题。 以下是示例代码: 网络.xml 免责声明 虽然这个问题被问了好几次,但他们都无法解决我的问题。 以下是示例代码: web.xml <?xml version='1.0' encoding='UTF-8'?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>MyApp</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Production</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> </web-app> 模板.xhtml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> <f:view locale="en_US"> <ui:insert name="fmetadata" /> <h:head> <ui:include src="/includes/head.xhtml" /> <title> <ui:insert name="title" /> </title> </h:head> <h:body> <ui:insert name="content" /> </h:body> </f:view> </html> 包含/head.xhtml <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Pragma" content="no-cache"/> <h:outputStylesheet name="style/style.css" /> </ui:composition> 登录.xhtml <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" template="/templates/template.xhtml"> <ui:define name="fmetadata" /> <ui:define name="title"> <h:outputText value="Login" /> </ui:define> <ui:define name="content"> <div id="login"> <h2> <h:outputText value="Login" escape="false" /> </h2> <h:messages styleClass="errorMessage" /> <h:form> <label> <h:outputText value="Login" escape="false" /> </label> <br /> <h:inputText value="#{authenticationController.view.login}" required="true" requiredMessage="Please enter a User Name" styleClass="inputText" /> <br /> <label> <h:outputText value="Password" escape="false" /> </label> <br /> <h:inputSecret value="#{authenticationController.view.password}" required="true" requiredMessage="Please enter a password" styleClass="inputText" /> <div class="inputButton"> <h:commandLink value="Login" action="#{authenticationController.authenticate}" /> </div> </h:form> </div> </ui:define> </ui:composition> 身份验证控制器 import java.io.Serializable; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.faces.application.ConfigurableNavigationHandler; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.event.ComponentSystemEvent; @SessionScoped @ManagedBean(name = "authenticationController") public class AuthenticationController implements Serializable { private static final long serialVersionUID = -6685652208738725676L; @EJB private UserServiceRemote userService; private LoginView view; public AuthenticationController() { } @PostConstruct public void init() { view = new LoginView(); } public String authenticate() { String login = view.getLogin(); String password = view.getPassword(); boolean isAuthenticated = userService.authenticate(login,password); if(isAuthenticated) { return "home.xhtml?faces-redirect=true"; } else { FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Invalid User Name / Password")); return "login.xhtml?faces-redirect=true"; } } public LoginView getView() { return view; } public void setView(LoginView view) { this.view = view; } } 登录查看 public class LoginView implements Serializable { private static final long serialVersionUID = -9139791962440768607L; private String login; private String password; public LoginView() { } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 当我点击登录h:commandLink时出现的错误是: jsf.js 在 HTML 中呈现,URL:http://localhost:6180/myapp/javax.faces.resource/jsf.js.xhtml?ln=javax.faces 也可访问: 当我将 context-param javax.faces.PROJECT_STAGE 的值更改为 Development 时,错误消失。在这种情况下,jsf.js的URL呈现为:http://localhost:6180/myapp/javax.faces.resource/jsf.js.xhtml?ln=javax.faces&stage=Development: 环境: JSF 莫哈拉 - 2.2.17 Java - 1.8.0_181 TomEE - 7.0.4 我认为你实际上并没有使用 Mojarra: TomEE 附带 MyFaces 您发布的第一个屏幕截图(jsf.js)充满了 MyFaces 引用 所以我的赌注是与你的(Maven 定义的?)Mojarra(如果你的类路径中的任何地方都有它)和你的应用程序服务器附带的 Myfaces 发生冲突。 您可以强制使用 Mojarra 版本的 jsf.js 或者,您可以通过将 lib 文件夹中必要的 jar 替换为 Mojarra 提供的内容来强制在 TomEE 上使用 Mojarra 只需在您的 xhtml 代码中添加 即可! Head 标签将 Faces javascript 添加到您的代码中!
jQuery UI 图标精灵在 <p:column selectionMode="multiple">
我有一个 和 。 我有一个 <p:dataTable> 和 <p:column selectionMode="multiple">。 <p:dataTable id="someAppDto" var="someAppDto" widgetVar="someAppDtoWV" value="#{someBean.requestedApplList}" style="width:96%" rows="100" paginator="true" scrollable="true" scrollHeight="300" selection="#{someBean.dvoList}" rowSelectMode="checkbox" rowKey="#{someAppDto.m_nDVOId}" paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" filteredValue="#{someBean.requestedApplListFltr}" rowsPerPageTemplate="10,50,100" resizableColumns="true" liveResize="true"> ... <p:column selectionMode="multiple" style="width:10px;"/> ... </p:dataTable> 相同的代码自过去 10 年以来一直运行,没有出现任何问题。然而,自过去 3-4 周以来,我们在复选框中看到了这些奇怪的图标。它不会影响任何功能,只会造成混乱。所以我们的最终用户想要修复它。 选中复选框后,奇怪的字符就消失了。但是当取消选中时,它会再次出现。我尝试为此创建一个 jsfiddle,但无法重现。因此,在 chrome 浏览器中发布 Inspect Element 的屏幕截图。 是的,我确实删除了浏览器缓存并尝试过,但没有成功。 我在某种程度上同意你们关于浏览器升级的看法。但我想知道为什么 Edge 和 Chrome 浏览器都会出现这种情况???过去 4-5 个月以来没有部署任何代码。无论代码发生什么变化,都是在 4-5 个月之前发生的,与此无关。 好的,现在这就是我所做的,它正在我的本地工作。我还没有在 Dev/UAT 中部署。 .ui-chkbox .ui-chkbox-box{ height: 12px; width: 12px; background: #ffffff none !important; text-shadow : none; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; } 之后: .ui-chkbox .ui-chkbox-box{ height: 13px; width: 13px; background: #ffffff none !important; text-shadow : none; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; } 仅将高度和宽度从 12px 更改为 13px。 仅供参考:上面的 CSS 代码位于我们的全局 .css 文件中 我知道这不是一个好的解决方案,但就目前而言,它正在发挥作用,用户也很满意。我仍然会寻找更好的解决方案
我有一个 JSF 页面,它将数据发布到外部页面。 数据从 JSF 托管 Bean 加载,该 Bean 在发布数据中生成唯一的 ID。 我遇到一个问题,用户点击结帐按钮...
我有一个带有 JSF 和 PrimeFaces 的 Java EE Web 应用程序。一切正常,但我在特定页面上遇到错误,指出托管 bean 为空,好像无法注入...
Primefaces 11 jakarta 在 commandButton 的操作属性上抛出 jakarta.el.PropertyNotFoundException
我正在从使用 J2ee6 和 Primefaces 3.5 的 jboss 迁移到使用 Jakarta EE 10 和 Jakarta 版本的 Primefaces 11 的 OpenLiberty。 我现有的代码工作正常,但现在当我尝试加载我的 xhtml 文件时......
我尝试在 JSF-Java EE 项目中显示自定义异常消息。当出现 500 错误时,我尝试重定向到 error500.xhtml 页面。页面显示错误 在ExternalCont中找不到/error500.xhtml...
我想创建一个应用程序,将书籍列表显示为 h:selectOneRadio 元素。当用户提交表单时,将用户的选择存储在 @SessionScoped 托管 bean 中。允许...
我正在使用 primefaces v 8.0 我遇到了 p:dialog 组件的问题,它的位置不在顶部,并且未显示对话框的一半我已经尝试了很多方法也尝试更改 CSS,如下所示...
Primefaces:如何解决DraggableRows抛出IndexOutOfBoundException
我已经使用 primefaces onRowReorder 事件实现了可拖动行。当我拖动行时,我收到 IndexOutOfBoundException。我不知道为什么会发生这种情况,希望得到一些帮助。 控制...