3页导航问题

时间:2012-05-17 17:52:56

标签: java jsp jsf

我有一点关键的情况。

考虑3页。 Page1 Page2 Page3

来自 Page1 。 QueryString中有一个参数名为'note'。它有两个值'CreateNote'或'UpdateNote'。根据这些值,我隐藏在 Page2 上显示的内容很少。

直到这里没问题。

现在来自 Page2 我需要导航到 Page3 。在 Page3 后退按钮。我尝试在Back上设置 note 属性,但仍然没有设置这些信息,因此会出现 Page2 空指针访问。


以下几个代码

Page1 类似

的网址
http://localhost:9095/Oscer/pages/UpdateNote.jsf?modified=NO&note=UpdateNote&docid=206&callFrom=prescribe

Page2

使用像...这样的scriptlet来处理它。

在backingbean构造函数调用上设置注释对象。

<%
    String note = request.getParameter("note");
    if(note == null || note.equals("")){
        note = (String)request.getAttribute("note");
    }
    request.setAttribute("note",note);
%>

第3页

尝试像BackButton一样处理,

if(note == null){
            FacesContext facesContext = FacesContext.getCurrentInstance();
            Map<String,String> requestObj = facesContext.getExternalContext().getRequestParameterMap();
            if(requestObj != null){
                note = requestObj.get("note"); //Either of CreateNote or UpdateNote
            }
        }

        request.setAttribute("note", note);

现在我们从 Page3 导航到 Page2 虽然我设置了request.setAttribute("note", note);它给出了 Page2 尚未确定:(

我无法理解如何在查询字符串handeled jsp page ??

的情况下导航

2 个答案:

答案 0 :(得分:0)

我做到了......:)

我做的是......

在其中一个backingBean上从 Page1 转到 Page2 时,假设 sampleBackingBean 设置一个变量。通过从 SampleBackingBean 的默认构造函数中的请求范围获取 note 来初始化它的值。

在jsp Page2 上,无论使用 {sampleBackingBean.note}

进行展示和隐藏内容

现在一切正常......:)

答案 1 :(得分:0)

不是将note属性保留在请求范围中,而是可以在从Page1到Page2的导航中将其保留在Session范围内。在Page2上从会话而不是查询字符串(或请求范围)中检索此属性。因此在第3页上,即使按下后退按钮,您的代码也可以正常工作。