gpt4 book ai didi

jsf - 如何在 JSF 页面中通过 EL 将数据放入 View 范围

转载 作者:行者123 更新时间:2023-12-01 10:41:11 25 4
gpt4 key购买 nike

在我的 JSF 页面中,这有效:

${requestScope.put('test', 'data')}
${requestScope.get('test')}

这会导致异常:
${viewScope.put('test', 'data')}
${viewScope.get('test')}

异常(exception):
java.lang.NullPointerException
javax.el.BeanELResolver.invoke(BeanELResolver.java:159)
javax.el.CompositeELResolver.invoke(CompositeELResolver.java:84)
org.apache.el.parser.AstValue.getValue(AstValue.java:157)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:238)
com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:154)
com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我如何在 JSF 页面上使用 requestScope 以外的内容?我当然可以有一个 View 范围的 bean,但我认为我可以直接使用范围变量。我有 Tomcat 8.0.21 和 Mojarra 2.2.10。

最佳答案

这不是将数据从 Facelets 模板放在某个范围内的正确方法。

你应该为此使用 <c:set>

将数据放入请求范围:

<c:set var="test" value="data" scope="request" />
..
#{test}

将数据放入 View 范围:
<c:set var="test" value="data" scope="view" />
..
#{test}
scope 属性也支持 sessionapplication

将数据放入 Flash scope 的做法有点不同:
<c:set target="#{flash}" property="test" value="data" />
...
#{flash.test}

关于jsf - 如何在 JSF 页面中通过 EL 将数据放入 View 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30029705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com