【问题标题】:xhtml not showing session scoped valuesxhtml 不显示会话范围的值
【发布时间】: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


【解决方案1】:

尝试使用,

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

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

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

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

【讨论】:

  • 感谢您的快速回复,我明天早上试试,看看会发生什么:)
  • 谢谢,它成功了。但为什么会这样?有没有一种方法可以让我使用another.name
猜你喜欢
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多