0

我有一个 ManagedBean,它是 Session Scoped,它注入另外两个 Session Scoped Bean,它们都有各自的 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

4

1 回答 1

0

尝试使用,

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

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

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

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

于 2013-05-15T03:50:16.040 回答