我有一个ManagedBean,它是Session Scoped,它注入另外两个Session Scoped Beans,它们都有正确的getter和setter。
我的课程如下:
@ManagedBean(name="oneClass")
@SessionScoped
public class OneClassController implements Serializable {
@ManagedProperty(value="#{myOtherBean}")
public AnotherClass another;
@ManagedProperty(value="#{requestBean}")
public RequestClass request;
public String foo() {
another = getAnotherService(request);
return "page?faces-redirect=true";
}
//getters and setters for AnotherClass and RequestClass
}
现在,请求类包含Web服务请求的所有值。这些值填写在xhtml页面中的表单中。
当用户完成填写请求并从按钮触发操作时,它会进入foo
方法。调试显示带有正确数据的请求,当我调用它时,another
会被正确填充。
现在,page.xhtml
看起来像这样:
<h:outputText value="#{requestBean.agentId}" />
<h:outputText value="#{myOtherBean.name}" />
<h:outputText value="#{myOtherBean.lastname}" />
呈现page
时,requestBean
中的所有值都会正确显示,但所有anotherBean
值都显示为空。即使刷新页面也不会有帮助。
如果我触发page.xhtml
中的按钮以在操作方法中打印出anotherBean
的值:
log.info("Another name: " + another.getName());
他们打印得很好。
我在web.xml
中为服务器设置了保存方法。
顺便说一下,这不是我正在使用的真正的命名约定,但是现在我在没有任何IDE或JDK的另一台计算机上,所以我试图最好地复制代码可以。
如何在page
中显示正确的值?
答案 0 :(得分:0)
尝试使用,
<h:outputText value="#{oneClass.another.name}" />
<h:outputText value="#{oneClass.another.lastname}" />
要查看sessionScope中的所有变量,您可以执行以下操作:
<h:outputText value="#{sessionScope}" />
这将确认“myOtherBean”是否在会话范围内。