0

我在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 的角度来看,什么是视图?

4

0 回答 0