0

現在、検索基準の属性を 2 つのページ (検索ページと編集ページ) の間のセッションに保存しようとしています。目標は、sYear、submission、collectionPeriod の 3 つの変数を保存することです。以下の検索画面コントローラーで、これらをセッションに追加しています。

request.getSession().setAttribute("sYearSave", sYear); request.getSession().setAttribute("submissionSave", submission); request.getSession().setAttribute("collectionPeriodSave", collectionPeriod);

編集画面コントローラーで、ブール値isFromEditScreentrue.This is に設定したので、編集画面から来ていることがわかります。変数を出力し、編集コントローラー画面で値を正しく取得します。

request.getSession().setAttribute("isFromEditScreen", new Boolean(true));
    sYearSave = (String)request.getSession().getAttribute("sYearSave");
    collectionPeriodSave = (String)request.getSession().getAttribute("collectionPeriodSave");
    submissionSave = (String)request.getSession().getAttribute("submissionSave");

しかし、問題は、[戻る] ボタンを使用して検索画面に戻ると、検索条件のsYearSave, collectionPeriodSave, and submissionSave値が返されることですNULL.。何らかの理由で、isFromEditScreenブール値が正常に機能して返されますtrue.。実際にはステートメントに入力されますが、検索条件が返されnull.ます。検索コントローラーのコードは次のとおりです。 :

if (isFromEditScreen != null && isFromEditScreen == true) {
        System.out.println("Inside isFromEditScreen ==== true");
        sYear = (String)request.getSession().getAttribute("sYearSave");
        collectionPeriod = (String)request.getSession().getAttribute("collectionPeriodSave");
        submission = (String)request.getSession().getAttribute("submissionSave");


        sYearSave = (String)request.getSession().getAttribute("sYearSave");
        collectionPeriodSave = (String)request.getSession().getAttribute("collectionPeriodSave");
        submissionSave = (String)request.getSession().getAttribute("submissionSave");

        System.out.println("sYearSave ==== " + sYearSave);
        System.out.println("submissionSave ==== " + submissionSave);
        System.out.println("collectionPeriodSave ==== " + collectionPeriodSave);
        System.out.println("isFromEditScreen set in else ==== " + isFromEditScreen);
        }

どんな助けでも大歓迎です!

4

2 に答える 2

1

Spring MVC を使用している場合 (質問タグが示すように)、SessionAttributes アノテーションを使用して、Spring の ModelAndView API を使用してみませんか? また、属性名がアプリケーション全体で一意であることを確認してください。

@RequestMapping("view-name")
@SessionAttributes( { "isFromEditScreen" })
public class YourController {

...

    @RequestMapping
    public ModelAndView display() {

        ModelAndView modelAndView = new ModelAndView("view-name");
        modelAndView.addObject("isFromEditScreen", new Boolean(true));
        return modelAndView;
    }

...
}
于 2013-04-01T09:00:36.547 に答える
0

セッション属性が上書きされていました。見落としミス。

于 2013-04-01T20:52:45.220 に答える