少し重要なシナリオがあります。
3ページを考えてみましょう。Page1、Page2、Page3。
Page1から。1つのパラメータは'note'という名前のQueryStringにあります。'CreateNote'または'UpdateNote'の2つの値があります。それらの値に基づいて、私は非表示にし、Page2のいくつかのコンテンツを表示します。
ここまで問題ありません。
次に、Page2からPage3に移動する必要があります。Page3の戻るボタン。Backにnote属性を設定しようとしましたが、それでもこれらの情報が設定されていないため、Page2でnullポインターアクセスが発生します。
以下のようないくつかのコード
Page1のようなURL
http://localhost:9095/Oscer/pages/UpdateNote.jsf?modified=NO¬e=UpdateNote&docid=206&callFrom=prescribe
Page2 _
次のようなスクリプトレットを使用して処理します...
backingbeanコンストラクター呼び出しでnoteオブジェクトを設定します。
<%
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に戻ると、まだ設定されていないPage2request.setAttribute("note", note);
に注意のNULLポインタ例外が発生します:(
クエリ文字列で処理されたjspページのような場合のナビゲート方法がわかりませんか?