Cómo poner datos en el alcance de la vista a través de EL en la página JSF
En mi página JSF esto funciona:
${requestScope.put('test', 'data')}
${requestScope.get('test')}
Esto causa una excepción:
${viewScope.put('test', 'data')}
${viewScope.get('test')}
Excepción:
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)
¿Cómo uso otro querequestScope
en la página JSF? Por supuesto, puedo tener un bean de ámbito de vista, pero pensé que podía usar las variables de alcance directamente. Tengo Tomcat 8.0.21 con Mojarra 2.2.10.