xhtml没有显示会话范围值

时间:2013-05-15 03:33:34

标签: java jsf-2 managed-bean

我有一个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中显示正确的值?

1 个答案:

答案 0 :(得分:0)

尝试使用,

<h:outputText value="#{oneClass.another.name}" />
<h:outputText value="#{oneClass.another.lastname}" />

要查看sessionScope中的所有变量,您可以执行以下操作:

<h:outputText value="#{sessionScope}" /> 

这将确认“myOtherBean”是否在会话范围内。