如何在JSF中重用旧视图

时间:2015-03-19 17:05:00

标签: jsf java-ee jsf-1.2 icefaces icefaces-1.8

icefaces中的并发视图限制超出问题。它支持每个会话不超过50个视图。在查找代码问题的过程中,我对视图的可重用性存在疑问。

考虑以下情况。

案例1:

如果用户停留在当前页面上,则返回空字符串会重新创建视图,如下所示。

 public String submit(){
          //...
          return "";
        }

案例2:

但是,下面的代码将重用旧视图。

public String submit(){
      //...
      return null;
    }

案例3:

我认为,下面的代码片段也会做同样的事情。如果我错了,请在这里纠正我。

public String submit() {
    // ...
    return "viewId?faces-redirect=true";
}

案例2和案例3之间有什么区别?

更新:

我已经使用JSF 1.2测试了一个应用程序,它允许所有3个案例,如上所述。

enter image description here

在我的bean中,我使用以下代码

public String saveData() {
    //String returnString = "";//Case 1 : works - user stays on the same page
    //String returnString = null;//Case 2: works - user stays on the same page
    // Case 3:
    String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
    System.out.println("view id = "+ viewId);
    String returnString = viewId+"?faces-redirect=true";
    System.out.println("return string = "+ returnString);
    return returnString;
}

我已在jetty中部署了上述应用程序。在上面的例子中,每次调用方法saveData()时,用户都会在输入字段中使用填充的数据停留在同一页面上,我从中推断,它重用旧页面或视图(我不清楚JSF中的视图)。这种情况在所有3个案例中都有发生,所以不确定确切的区别,如何体验这种差异? JSF视角的观点是什么?

0 个答案:

没有答案