JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
自 PrimeFaces 14 起:datePicker 中的yearNavigator 显示为微调框而不是下拉菜单。 当你必须(在 100 年的列表中)到达 1917 年,而你在 2024 年,并且......
我面临着渲染通过嵌套复合组件中的构面传递的内容的问题。尽管分面被识别为非空,但这些分面内的内容不会出现在...
从 Jakara Faces 4.0 XHTML 访问 Kotlin 类
我一直在 WildFly (15.x -> 20.x) 上成功使用 Kotlin (1.4.10) 和 JSF (XHTML) 到 2018 年 12 月。使用 Java EE (8) 和 JSF。 我现在正在迁移现有的工作 Jakarta (Java) EE (1...
在某些情况下(例如每当发生异常时),如何在托管 bean 中以编程方式执行 JSF 内部页面转发?我不想在转发到其他页面时更改 URL。 对不对...
如果我尝试调用网络服务器上的 .xhtml 页面,我会收到 404。 我的 web.xml 如果我尝试调用网络服务器上的 .xhtml 页面,我会收到 404。 我的 web.xml <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</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>/faces/*</url-pattern> </servlet-mapping> </web-app> 我的项目结构: 在此输入图片描述 在我的容器上: 在此输入图片描述 当我调用“localhost/amazonlite/cart.xhtml”或“localhost/cart.xhtml”或“localhost/amazonlite/faces/cart.xhtml”或“http://localhost:8080/faces/cart.xhtml”时“我找不到资源。 faces-servlet 的 url 模式应该是简单的 *.xhtml,以便 JSF 处理任何路径上的所有 xhtml 文件,然后 url 应该是 http://localhost:8080/amazonlite/cart.xhtml 才能正常工作。 要对部署环境中使用的正确 URL 进行逆向工程:Web 应用程序的名称(本例中为“amazonlite”)默认是 URL 的一部分,Tomcat 侦听 HTTP 流量的默认端口是 8080。 Web 应用程序的名称默认为战争名称,不带 .war 扩展名。因此 amazonlite.war 变为 amazonlite。 供参考,问题中更改后的 web.xml: <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</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>
在 p:dataTable 中的 p:inputTextarea 中编辑多行文本
我想在单元格中编辑多行文本,所以我有以下代码: 我想在单元格中编辑多行文本,所以我有以下代码: <p:dataTable ... editable="true" editMode="cell"> <p:column ...> <p:cellEditor> <f:facet name="output"><h:outputText value="#{myBean.value}"/></f:facet> <f:facet name="input"><p:inputTextarea value="#{myBean.value}"/></f:facet> </p:cellEditor> </p:column> </p:dataTable> 但是我遇到了无法插入新行的问题,因为更改会在按下回车键时发送到后端。是否可以通过 ctrl+enter 发送更改或添加一个小的“确定”按钮? 你应该这样使用: <textarea cols="40" rows="3" value="#{myBean.value}" />
通过在javascript循环中单击commandButton多次发送Ajax请求
由于服务器限制,我遇到了问题。服务器只允许传输25MB以下的数据。应该上传的数据是80MB+。我正在使用 JSF、Primefaces 和 JavaEE...
<h:selectOneRadio>渲染表格元素,如何避免这种情况?
有没有办法告诉 JSF 在使用 时不应该渲染 元素? 我不使用表格,在这种情况下它完全没有意义。 任何帮助都是 有没有办法告诉 JSF 在使用 <table> 时不应该渲染 <h:selectOneRadio> 元素? 我不使用表格,在这种情况下它完全没有意义。 如有任何帮助,我们将不胜感激! JSF 2.3 具有 group 属性 根据 JSF 规范第 329 期,我向 group 添加了一个新的 <h:selectOneRadio> 属性,这应该会使这一切变得不那么乏味。父级 group 内具有相同 UIForm 值的所有单选按钮组件将彼此分组。此外,如果选择的项目具有非空 label,那么除了单选按钮本身和可选标签之外,它们不会呈现任何标记。如果有,标签将直接出现在单选按钮之后。 <!-- Just markup them the way you want! --> <ul> <ui:repeat id="items" value="#{bean.items}" var="item"> <li> <h:selectOneRadio group="foo" value="#{bean.selectedItem}"> <f:selectItem itemValue="#{item}" /> </h:selectOneRadio> </li> </ui:repeat> </ul> 以下场景也是可能的。当多个组件具有相同的 group,并且 value 属性和/或 UISelectItem 子组件不存在时,它将引用组中第一个组件的组件。 <h:selectOneRadio group="foo" value="#{bean.selectedItem}"> <f:selectItems value="#{bean.availableItems}" /> </h:selectOneRadio> <h:selectOneRadio group="foo" /> <h:selectOneRadio group="foo" /> <h:selectOneRadio group="foo" value="#{bean.selectedItem}"> <f:selectItem itemValue="one" /> <f:selectItem itemValue="two" /> <f:selectItem itemValue="three" /> </h:selectOneRadio> <h:selectOneRadio group="foo" /> <h:selectOneRadio group="foo" /> <h:selectOneRadio group="foo" value="#{bean.selectedItem}"> <f:selectItem itemValue="one" /> </h:selectOneRadio> <h:selectOneRadio group="foo"> <f:selectItem itemValue="two" /> </h:selectOneRadio> <h:selectOneRadio group="foo"> <f:selectItem itemValue="three" /> </h:selectOneRadio> <h:selectOneRadio group="foo" value="#{bean.selectedItem}"> <f:selectItem itemValue="one" /> </h:selectOneRadio> <h:selectOneRadio group="foo" value="#{otherBean.selectedItem}"> <f:selectItem itemValue="two" /> </h:selectOneRadio> <h:selectOneRadio group="foo" value="#{lastBean.selectedItem}"> <f:selectItem itemValue="three" /> </h:selectOneRadio> 它将根据 2.3.0-m07 在 Mojarra 中提供。 带有直通元素的 JSF 2.2 如果您已经使用 JSF 2.2,请利用其新的 passthrough elements/attributues 功能,您可以将 name 属性显式设置为 passthrough 属性。为了在模型中设置提交的值,您只需要额外的<h:inputHidden>。 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:a="http://xmlns.jcp.org/jsf/passthrough"> ... <!-- Just markup them the way you want! --> <ul> <ui:repeat id="items" value="#{bean.items}" var="item"> <li> <input type="radio" jsf:id="item" a:name="#{hiddenItem.clientId}" value="#{item}" a:checked="#{item eq bean.selectedItem ? 'checked' : null}" /> <h:outputLabel for="item" value="#{item}" /> </li> </ui:repeat> </ul> <!-- This one won't display anything. --> <h:inputHidden id="selectedItem" binding="#{hiddenItem}" value="#{bean.selectedItem}" rendered="#{facesContext.currentPhaseId.ordinal ne 6}" /> 深入的技术解释可以在此博客中找到:在 JSF 2.2 中使用 h:selectOneRadio 自定义布局。 PrimeFaces (JSF 2.x) 如果您碰巧使用PrimeFaces,那么您也可以将<p:selectOneRadio layout="custom">与<p:radioButton>一起使用。 <html ... xmlns:p="http://primefaces.org/ui"> <!-- This one won't display anything. --> <p:selectOneRadio id="foo" value="#{bean.selectedFoo}" layout="custom"> <f:selectItems value="#{bean.availableFoos}" /> </p:selectOneRadio> <!-- Just markup them the way you want! --> <ul> <li><p:radioButton for="foo" itemIndex="0" /></li> <li><p:radioButton for="foo" itemIndex="1" /></li> <li><p:radioButton for="foo" itemIndex="2" /></li> </ul> 您还可以循环遍历可用的项目,您只需要在 view build time: 期间执行此操作 <ul> <c:forEach items="#{bean.availableFoos}" varStatus="loop"> <li><p:radioButton for="foo" itemIndex="#{loop.index}" /></li> </c:forEach> </ul> 战斧(JSF 1.x 或 2.x) 如果您尚未使用 JSF 2.2 或者不喜欢 PrimeFaces UI,请使用 Tomahawk 的 <t:selectOneRadio>,它呈现与 <h:selectOneRadio> 相同的纯 HTML 输出,但支持 layout="spread" 属性,以便您可以定位按您想要的方式 <t:radio> 制作项目。 例如 <html ... xmlns:t="http://myfaces.apache.org/tomahawk"> <!-- This one won't display anything. --> <t:selectOneRadio id="foo" value="#{bean.selectedFoo}" layout="spread"> <f:selectItems value="#{bean.availableFoos}" /> </t:selectOneRadio> <!-- Just markup them the way you want! --> <ul> <li><t:radio for="foo" index="0" /></li> <li><t:radio for="foo" index="1" /></li> <li><t:radio for="foo" index="2" /></li> </ul> 自定义渲染器 提供定制Renderer。这只是一点点工作。从下面显示的第一个“另请参阅”链接开始: 另请参阅: 如何覆盖 h:selectOneRadio 渲染器? jsf-impl中的渲染器类在哪里? 是否可以使用 JSF 构建干净的 CSS 布局而不使用表格? 在没有 HTML 表格的情况下渲染 selectManyCheckbox 我不知道这对您来说是否足够合理,但是,这是一个示例解决方法。 xhtml代码: <ui:repeat value="#{myBean.valueList}" var="radioValue"> <input type="radio" name="radioSelection" value="#{radioValue}" checked="#{radioValue == myBean.selectedRadioValue ? 'checked' : ''}">#{radioValue}</input> </ui:repeat> 支撑豆: private String selectedRadioValue; private List<Integer> valueList; public MyBean() { valueList = new ArrayList<Integer>(); for (int i = 0; i < 15; i++) { valueList.add(i); } } public String getSelectedRadioValue() { return selectedRadioValue; } public List<Integer> getValueList() { return valueList; } public void actionMethod() { HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); selectedRadioValue = request.getParameter("radioSelection"); } 由于您无法直接在 xhtml 上为单选选项分配值,因此您需要从请求参数中获取它并在操作方法中手动分配它。
在列表<ui:repeat>或数据数组上使用<h:inputText>、<f:validateWholeBean>和<...>
从无处不在的使用 f:valdiateWholeBean 进行类级别 bean 验证的密码示例开始,我尝试通过 和 &l...
为了更好地理解 JSF (2.x) 中的 clientID 生成,有人可以向我解释一下 JSF 何时生成客户端 ID(哪个生命周期阶段、构建时间或渲染时间...)? ...
对于普通请求,我们可以简单地在 web.xml 中注册一个 。但是,这不适用于 Ajax 请求。默认情况下,Ajax 请求期间的错误会导致一些流行风......
将 ICEfaces 迁移到 PrimeFaces 会导致警告:JSF1085:自定义范围“#{window}”计算为 null。托管 bean 未推送到范围
我正在尝试将我的项目从 jdk 1.7 mojarra 2.1.9 和icefaces 3.30 迁移到 Tomcat8.5 或更高版本上的 jdk8 mojarra 2.2.10 和 primefaces 12 我已经更改了所有库并且出现了登录页面...
Primefaces Calendar 当 required 为 true 时,不调用 Ajax 监听器
简介-我有 2 个 p:calendar 组件,calreq 需要 =“true” 而 calnotreq 是可选的。 代码 - p:calendar xhtml 代码与 ajax 调用 Intro-我有 2 个 p:calendar 组件,calreq 有 required="true" 而 calnotreq 是可选的。 代码- p:带有ajax调用的日历xhtml代码 <p:outputLabel value="Calendar Required" for="calreq" /> <p:calendar label="Calendar Required" id="calreq" required="true" inputStyle="width: 100px;" showOn="button" value="#{myBean.calReqObj}" > <p:ajax event="dateSelect" listener="#{myAction.calReqChange()}"/> <p:ajax event="change" listener="#{myAction.calReqChange()}"/> </p:calendar> <p:outputLabel value="Calendar Not Required" for="calnotreq" /> <p:calendar label="Calendar Not Required" id="calnotreq" inputStyle="width: 100px;" showOn="button" value="#{myBean.calNotReqObj}" > <p:ajax event="dateSelect" listener="#{myAction.calNotReqChange()}"/> <p:ajax event="change" listener="#{myAction.calNotReqChange()}"/> </p:calendar> 描述-它是一大块代码的一部分,并且正确地包装在form/panel/panelgrid内。当日期值从日历或键盘更改时,将调用两个 ajax 调用 calReqChange() & calNotReqChange()。 问题- calreq 的 ajax 侦听器在一种情况下未调用。当日期字段被清空/无效时,不会调用侦听器,相应的支持 bean 对象不会更新为 null。 (但是 calnotreq 监听器被调用) 这是什么原因以及如何解决? 注意-我在 p:ajax 中尝试了不同的属性,但没有任何帮助: immediate=true, process=@this, update=@this。 还尝试了 f:ajax 而不是 p:ajax。 请帮忙!! 抱歉写了答案,但我还不能发表评论:/ 您能把这两门课也放在这里吗?我也许可以帮助你解决这个问题,但这绝对看起来像是被调用类中的逻辑问题,因为 xhtml 是好的。
我想在上传图像时不显示缩略图。我怎样才能删除它? 示例:https://lh3.googleusercontent.com/-nWDNS4695Lg/UtTy3-c9y2I/AAAAAAAAArY/USGOIL43Iyg/w979-h314-no/Capture4.PNG(SR,我...
我有两个演示项目,项目结构略有不同。一个生成 WAR 存档,另一个生成 EAR 存档。 在 WAR 项目中,在 Backin 中注入 @EJB...
如何通过primefaces中的bean在selectOneRadio/selectCheckboxMenu中设置默认选定的项目
我想创建 selectOneRadio 列表和 selectCheckboxMenu ,这些项目从相关的 bean 对象中获取。 对于非选定列表,它运行良好。但是我如何为这些列表提供一些项目
为 glassfish 网络服务器缓存 css、js 和字体缓存的最佳方式
我有Glassfish网络服务器,我希望我的应用程序在客户端缓存文件,我尝试了多种方法,但它对任何方法都不起作用,并且某些方法使用不在我的c中的apache网络服务器...
当我提交表单时,它应该调用另一个表单,以便我可以渲染它。我使用 primefaces,我希望它能像下面这样工作。但它抛出一个错误。 html ...
所以我有一个 JSF 应用程序。如果我提交表单,当我刷新页面时它会重新提交。我当然不希望这样。 索引.xhtml: [...] 所以我有一个 JSF 应用程序。如果我提交表单,当我刷新页面时它会重新提交。当然我不想要这样。 索引.xhtml: [...] <h:form > <h:outputText value="Form"/><br/> <h:inputText label="first" value="#{example.newExample.firstWord}" autocomplete="off"></h:inputText> <h:commandButton value="click" actionListener="#{example.NewExample()}"> </h:commandButton> </h:form> [...] 运行的方法: public void NewExample(){ pfDB.InsertNewExample(NewExample); NewExample.setFirstWord(null); NewExample.setSecondWord(null); } 所以每次我提交表单后刷新index.xhtml,NewExample()就会运行。 问题确实出在重新提交表格上。但浏览器(opera)没有显示警报。 我通过添加修复了它 FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml"); 在我的职能中 尝试通过ajax提交: <h:commandButton value="click" actionListener="#{example.NewExample()}"> <f:ajax /> </h:commandButton> 您可能需要渲染一些组件。
从 WebSphere 迁移到 Springboot 的 JSF 应用程序会在导航期间重新加载同一页面,而不是加载单击的页面,而不会出现任何控制台错误
将 JSF 项目从 WebSphere 迁移到 Spring Boot(包括将其从 WAR 转换为 JAR)后,应用程序开始运行。然而,我们遇到了间歇性问题,其中...