【问题标题】:Commandlink action and @viewscoped weird behaviourCommandlink 动作和@viewscoped 奇怪的行为
【发布时间】:2011-10-23 21:05:28
【问题描述】:

我有一些由 netbeans 向导“来自实体类的 JSF 页面”生成的代码。 对于那些不使用 netbeans 的人,我将简要介绍该向导的作用。 它创建一个 JSF 页面 List.xhtml,其中包含一个固定大小为 10 行的数据表和两个用于滚动其内容的命令链接(上一个 10 和下一个 10)。 JSF 页面使用具有会话范围的托管bean,并且上述命令链接返回字符串“列表”。 如果我将托管 bean 范围更改为 @viewscoped,则每次推送命令链接时都会重新创建它。在我看来,这是一种奇怪的行为,因为视图实际上并没有改变(它总是 List.xhtml ),我本来希望有一个智能视图范围机制。

然后,我将与命令链接关联的操作更改为一个新的操作,该操作执行相同的操作但返回无效。现在@viewscope 机制运行良好,但我不确定使用带有这样签名的操作方法是否正确

public void doSomething()
// instead of
public String doSomething()

我担心的是,不同的 JSF 实现可能会以一种无法预测的方式执行这种操作。

谢谢 菲利波

【问题讨论】:

    标签: jsf netbeans


    【解决方案1】:

    public String doSomething()返回什么?

    如果您返回 null(或空字符串),则不应重新创建视图。

    如果您返回一个导航案例,则重新创建视图,无论它是否与您当前所在的相同。

    【讨论】:

    • 如上所述public String doSomething() 返回'List',它是活动视图的名称。我理解你的意思,但想知道返回空字符串是否安全(考虑到不同 JSF 实现之间的兼容性)以及它是否与使用 public void doSomething() 不同
    猜你喜欢
    • 2013-09-05
    • 2016-12-05
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2017-07-27
    • 2017-05-09
    相关资源
    最近更新 更多