我在icefaces中遇到了超出并发视图限制的问题。它支持每个会话不超过 50 个视图。在查找代码问题的过程中,我对视图的可重用性有疑问。
考虑以下情况。
情况1:
尽管用户停留在当前页面,但返回空字符串将重新创建视图,如下所示。
public String submit(){
//...
return "";
}
案例二:
但是,下面的代码将重用旧视图。
public String submit(){
//...
return null;
}
案例3:
我认为,下面的代码片段也会这样做。在这里纠正我,如果我错了。
public String submit() {
// ...
return "viewId?faces-redirect=true";
}
案例2和案例3有什么区别?
更新:
我已经使用 JSF 1.2 测试了一个应用程序,它允许所有 3 种情况,如上所述。
在我的 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 的角度来看,什么是视图?