我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个案例,如上所述。
在我的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视角的观点是什么?