JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
在 Tomcat 6 上运行的两个 Web 应用程序之间建立 SSO 和会话共享
我有两个 Web 应用程序,webapp1 (JSF-Spring) 和 webapp2 (Struts) 在单个 Tomcat 6.0 上运行。 Webapp1 使用 JSF 阶段侦听器来保护 web 应用程序中的所有资源。 用户之后
集成 JSF 时出现“无法从 jsf-impl-2.0.jar 读取 TLD META-INF/jsf_core.tld”错误
我们有一个Struts+Spring+Hibernate应用程序,我们正在尝试集成JSF。为此,我们在 web.xml 和 struts-config.xml 中做了一些配置。我添加了一些 JAR 文件到 WEB-INF/l...
我对Struts很感兴趣,并且开始学习JSF 2.0。我可以继续使用 Struts 中有效的方法来减少攻击向量,还是有我需要编码的新攻击向量?
当我从@Startup @Singleton bean的@Schedule调用方法时出现NullPointerException
当我尝试从@Startup @Singleton bean调用@ViewScoped Bean的方法时,我总是遇到错误NullPointerException。我使用@Schedule注解方法来调用@ViewScoped bean方法,为什么呢
p:commandButton 操作抛出 javax.el.PropertyNotFoundException
错误在于: javax.el.PropertyNotFoundException:/index.xhtml:在 fya.beanpages.IndexBean 类型上找不到属性“validar” 看起来它没有找到 validar 方法。这...
我的 Facelet 中有以下代码片段: 我的 Facelet 中有以下代码片段: <h:commandLink id="cmdbtn"> <f:ajax event="click" execute="@form" listener="#{screenShotBean.takeScreenshot}" /> </h:commandLink> 它工作得很好,但是当我像这样评论它时, <!-- <h:commandLink id="cmdbtn"> --> <!-- <f:ajax event="click" execute="@form" --> <!-- listener="#{screenShotBean.takeScreenshot}" /> --> <!-- </h:commandLink> --> 然后抛出以下异常: javax.el.PropertyNotFoundException: Property 'takeScreenshot' not found on type monstage.test.com.ScreenShotBean at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237) at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:214) at javax.el.BeanELResolver.property(BeanELResolver.java:325) at javax.el.BeanELResolver.getValue(BeanELResolver.java:85) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at org.apache.el.parser.AstValue.getValue(AstValue.java:169) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) at com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217) at com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157) at com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77) at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183) at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:424) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 当我如下更改带括号的方法表达式时, <!-- <h:commandLink id="cmdbtn"> --> <!-- <f:ajax event="click" execute="@form" --> <!-- listener="#{screenShotBean.takeScreenshot()}" /> --> <!-- </h:commandLink> --> Then 不会抛出异常,但仍然被调用。 这是怎么造成的,如何解决? 仔细查看堆栈跟踪。这是相关部分: ... org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217) com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157) com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77) ... 因此它在注释块中评估 EL(可通过 CommentInstruction 识别)。注释块被视为模板文本。默认情况下,Facelets 也会评估模板文本中的 EL #{}。就像您在编写 <p>#{screenShotBean.takeScreenshot}</p> 时没有任何 JSF 标签一样。 您有多种选择: 完全删除评论块。 通过在注释中添加 \ 前缀来转义 EL 表达式,如 所示 \#{screenShotBean.takeScreenshot} 这样他们就不会被评价。 将整个注释块包裹在 <ui:remove> 中,这样它就不会出现在组件树中(也不会出现在生成的 HTML 输出中)。 通过将以下上下文参数添加到 web.xml 来禁用 Facelets 对 all 注释的解析: <context-param> <param-name>jakarta.faces.FACELETS_SKIP_COMMENTS</param-name> <param-value>true</param-value> </context-param> 请注意,通过这种方式生成的 HTML 输出中不会出现任何评论。 除了 BalusC 已经提供的 选项,您还可以将属性 rendered="false" 添加到您的 commandLink。 如果您希望能够快速切换多个组件,您可能需要考虑在 bean 中创建调试属性或使用项目阶段: rendered="#{facesContext.application.projectStage == 'Development'}" 您还可以使用上下文参数来跳过 web.xml 中的注释。 这是参数: javax.faces.FACELETS_SKIP_COMMENTS
类“packageName.DonacionBean”没有属性“donar” - 未检测到操作方法?
我在使用 EJB 和 JSF 的 Java 项目中遇到了一个问题,这非常令人沮丧。我有一个简单的设置,其中 XHTML 文件调用托管 bean 中定义的方法。 这是我的 .xhtml:...
JSF - 类“packageName.DonacionBean”没有属性“donar” - 未检测到操作方法?
我在使用 EJB 和 JSF 的 Java 项目中遇到了一个问题,这非常令人沮丧。我有一个简单的设置,其中 XHTML 文件调用托管 bean 中定义的方法。 这是我的 .xhtml:...
PrimeFaces selectOneMenu 动态 =“true”不起作用
我尝试在加载页面时不加载 p:selectOneMenu 项目列表,因为该列表太大。我将属性dynamic =“true”设置为延迟加载,但它总是加载lis...
Primefaces import enum all 选项不适用于 JSF PROJECT_STAGE 设置为 Production
我有一个 Java EE Web 项目,我在其中使用 Primefaces 作为 UI 组件。我正在使用 Primefaces 提供的带有全后缀的导入枚举功能。当我的 JSF PROJECT_STAGE 设置为
JSF 页面中出现带有 <f:websocket> 的错误“websocket is null”
上下文:Jakarta EE 10,Payara 6.2024.7,网络配置文件。爪哇21。 我的应用程序使用 OpenAI API 和 LangChain4j 进行非“定制”聊天。 在网页中,表单将问题发送到
我有一些代码如下(工作正常) 我有一些代码如下(工作正常) <pe:inputNumber value="#{myBean.myVal}" minValue="0" maxValue="999999999999999.999999999" emptyValue="1" thousandSeparator="." decimalSeparator="," /> 然后,如果我输入[1],它将显示[1,000000000],我的麻烦是很多零可能会让我的用户感到困惑。 是否有办法在此输入上修剪它?,只显示用户输入的任何内容,例如[1,20] -> [1,2] or [1,20] 我的脚本: function trimDecimalPlace(){ var curVal = $(".ui-inputNum > input:first-child").val(); var parseVal = ''; if(curVal.indexOf(".") > curVal.indexOf(",")){ var tokens = curVal.split("."); var decimalVal = parseFloat("0."+tokens[1])+""; if(decimalVal != "0"){ parseVal = tokens[0]+"."+decimalVal.substring(2); }else{ parseVal = tokens[0]; } }else{ var tokens = curVal.split(","); var decimalVal = parseFloat("0."+tokens[1])+""; if(decimalVal != "0"){ parseVal = tokens[0]+","+decimalVal.substring(2); }else{ parseVal = tokens[0]; } } $(".ui-inputNum > input:first-child").val(parseVal); } 并在模糊时调用它: <pe:inputNumber value="#{myBean.myVal}" minValue="0" maxValue="999999999999999.999999999" emptyValue="1" onblur="trimDecimalPlace();" thousandSeparator="." decimalSeparator="," /> 您可以使用 decimalPlaces 属性。默认值是从 maxValue 属性获取的,因此在您的情况下它是 999999999999999.999999999. 只需将标签 padControl="false" 与 inputNumber 控件一起使用 <p:inputNumber style="width:140px;" value="#{mopEdicionBean.permisoMop.mopKlmtFinalB}" thousandSeparator="" decimalPlaces="3" maxlength="4" minValue="0" maxValue="9999" size="16" padControl="false"> <p:ajax event="change" update="nombre_permiso"/> </p:inputNumber> p:inputNumber 很难与可变长度的数字一起使用。只需将 p:inputText 与大 maxFractionDigits 一起使用,并强制区域设置获得正确的小数分隔符和千位分隔符。 <p:inputText value="#{myBean.myVal}"> <f:convertNumber minFractionDigits="1" maxFractionDigits="50" locale="#{myBean.locale}"/> <f:validateDoubleRange minimum="0" maximum="999999999999999.999999999"/> </p:inputText>
我很久以前出于课堂目的使用了 JSF 和 PrimeFaces。 现在我想进入春季并为自己建立一个网站,但我没有得到任何支持。 通常我想做的事...
我目前能够使用自定义异常处理程序捕获所有异常,如下所述: JSF 2 全局异常处理,导航到错误页面未发生 我正在做广泛的你...
是否可以在 Primefaces BarChartModel 上的每个柱形上/内部/上方显示值。我没有找到这个功能。我在 jsf 应用程序中使用 primefaces 13.0.0。我想要一些像...
我创建了一个通知托盘。首先,它的结构是使用 p:tabView 标签和两个选项卡进行编码的,每个选项卡内部都有一个 p:dataTable。当我尝试更改其中一个 p:dataTable 的页面时,ne...
我一直在使用 primefaces,工作表组件满足了我完成工作所需的大部分要求,做了一些研究并添加了上下文菜单和其他功能,但是我的...
向 jakarta.faces.Messages 国际化添加新语言
在 jakarta.faces 中,这些是唯一可用的消息翻译(显示的消息取自位于 jakarta.faces.Messages 的 jar jakarta.faces-4.1.1): 我需要添加 Messages_it.prop...
如何使用 Jakarta Faces (JSF) 和 Glassfish 处理身份验证失败
我正在尝试基于 Jakarta 10.0 Faces 和 Glassfish 7 实现基于简单表单的身份验证。 一个(非常)最小(但有效)的代码显示了该过程:loginout.xhtml 登录调用 LoginOu...
我有一个像这样的选择列表: 高级 我有一个像这样的选项列表: <div class="card"> <h5>Advanced</h5> <p:pickList id="pojoPickList" value="#{pickListView.countries}" var="country" itemValue="#{country}" itemLabel="#{country.name}" converter="#{countryConverter}" labelDisplay="inline" > <f:facet name="sourceCaption">Available</f:facet> <f:facet name="targetCaption">Starting</f:facet> <p:ajax event="transfer" listener="#{pickListView.onTransfer}" update="msg"/> <p:column style="width:94%"> <div class="flex align-items-center"> <span class="flag flag-#{country.code} mr-2" style="width: 30px; height: 20px" /> <h:outputText value="#{country.name}"/> </div> </p:column> </p:pickList> </div> 这些按钮标有“移动到目标”、“全部移动到目标”等。我想更改英语和其他国家/地区的标签。我该如何去做呢?我找到了文档here和here,但它们没有指出我从哪里开始覆盖默认翻译。我还发现了这个问题,但是addLabel,addAllLabel,...属性在PrimeFaces 14中被删除了。 编辑:后来编辑了可能的重复项,以更好地回答这个问题。我的描述已经包含了它的链接以及它不能回答我的问题的解释。还是不行,见评论区。 只需将此脚本添加到您的页面并更改您想要的任何语言即可。 一旦你让它工作,将所有这些移动到一个 stefan-locales.js 文件中,然后使用正常的 <h:outputScript> 加载该文件 这会覆盖英语 EN 区域设置的那些标签。 显然你也可以为其他人做同样的事情。 PrimeFaces.locales["en"] = $.extend(true, {}, PrimeFaces.locales["en"], { aria: { moveAllToSource: "Move All to Source", moveAllToTarget: "Move All to Target", moveBottom: "Move Bottom", moveDown: "Move Down", moveToSource: "Move to Source", moveToTarget: "Move to Target", moveTop: "Move Top", moveUp: "Move Up", }, });