0

我有一个关键的场景。

考虑 3 页。1 页,第2 页第 3 页

第 1 页。QueryString 中有一个参数,名为“note”。它有两个值“CreateNote”或“UpdateNote”。基于这些值,我在Page2上隐藏并显示很少的内容。

到这里没问题。

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


一些代码如下

第 1 页URL 喜欢

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

第 2 页

它使用像...这样的脚本来处理

在 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);

现在,当我们从第3 页导航到第2 页时,虽然我设置request.setAttribute("note", note); 了它给出了 NULL 指针异常原因,说明第2 页尚未设置:(

我不明白如何导航,以防查询字符串处理 jsp 页面?

4

2 回答 2

0

我做的... :)

我所做的是...

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

在 jsp Page2上,无论显示和隐藏内容,都使用{sampleBackingBean.note}

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

于 2012-05-18T05:41:20.993 回答
0

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

于 2012-05-18T12:43:08.523 回答