【发布时间】:2013-05-09 12:18:15
【问题描述】:
我有一个 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 中显示正确的值?
【问题讨论】:
-
如果你已经用
@ManagedProperty注入它,another = getAnotherService(request);在那里做什么?
标签: java jsf-2 managed-bean