Commandlink动作和@viewscoped奇怪的行为

时间:2011-08-10 08:17:14

标签: jsf netbeans

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

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

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

我担心的是,不同的JSF实现可以通过这种行为以不可预测的方式起作用。

由于 菲利普

1 个答案:

答案 0 :(得分:0)

您在public String doSomething()中的回报是什么?

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

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