如何通过JSF页面中的EL将数据放入视图范围 [英] How to put data in view scope via EL in JSF page

查看:97
本文介绍了如何通过JSF页面中的EL将数据放入视图范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的JSF页面中,此方法有效:

In my JSF page this works:

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

这会导致异常:

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

例外:

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以外的名称?我当然可以有一个视图范围的bean,但是我想我可以直接使用范围变量.我有带有Mojarra 2.2.10的Tomcat 8.0.21.

How do I use other than requestScope on JSF page? I can of course have a view scoped bean but I thought I can use the scope variables directly. I have Tomcat 8.0.21 with Mojarra 2.2.10.

推荐答案

这不是从Facelets模板上将数据放在特定范围内的正确方法.

This is not the right way to put data in a certain scope from the Facelets template on.

您应该使用 <c:set> .

You're supposed to use <c:set> for this.

将数据放入请求范围:

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

将数据放入视图范围:

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

scope属性还支持sessionapplication.

将数据放入 Flash作用域是做了一些不同的事情:

Putting data in the Flash scope is done a bit differently:

<c:set target="#{flash}" property="test" value="data" />
...
#{flash.test}

这篇关于如何通过JSF页面中的EL将数据放入视图范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆