我有一点关键的情况。
考虑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¬e=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 ??
的情况下导航答案 0 :(得分:0)
我做到了......:)
我做的是......
在其中一个backingBean上从 Page1 转到 Page2 时,假设 sampleBackingBean 设置一个变量。通过从 SampleBackingBean 的默认构造函数中的请求范围获取 note 来初始化它的值。
在jsp Page2 上,无论使用 {sampleBackingBean.note}
现在一切正常......:)
答案 1 :(得分:0)
不是将note
属性保留在请求范围中,而是可以在从Page1到Page2的导航中将其保留在Session范围内。在Page2上从会话而不是查询字符串(或请求范围)中检索此属性。因此在第3页上,即使按下后退按钮,您的代码也可以正常工作。