2

アカウントを表示、編集、削除するアプリケーションがあります。

  1. ディスプレイはURLによって使用displayAccounts.jspされ、呼び出されます/accounts
  2. Editは、編集するアカウントの主キーがどこにあるかeditAccount.jspによって呼び出されます。/accounts/{id}/editid
  3. Deleteにはそれ自体のビューはありませんが@RequestMapping、Controllerのメソッドを呼び出すだけで、によって呼び出されます。/accounts/{id}/delete

すべてのアクションは、成功すると、表示ページにリダイレクトされます。

  1. 操作(編集/削除)が正常に実行されたら、表示ページに表示できる成功メッセージを送信したいと思います。どうすればこれを達成できますか?

  2. 削除操作のビューがないので、[表示]ページにもエラーを表示したいと思います。

助けてください。前もって感謝します。

4

6 に答える 6

8

の使用は、RedirectAttributesこれを達成するために必要なものです。EDITおよびDELETE操作のPOSTメソッドから、「redirect:」を使用して、コントローラーを介してDISPLAYビューにリダイレクトしていると想定します。

これを実現するRedirectAttributes attributesには、コントローラー関数のパラメーターとして持つ必要があります。次に、returnステートメントの前に、次のコード行を追加する必要があります。

attributes.addFlashAttribute("successMsg", "Account Edit/Delete successfully");

また

attributes.addFlashAttribute("errorMsg", "Edit/Delete account is unsuccessful");

エラーメッセージの場合。

次に、displayAccounts.jsp${successMsg}ページで、またはを使用してメッセージを表示する必要があります。${errorMsg}

メッセージが表示されたら、ページを更新してもメッセージは表示されません。ユーザーに一度だけ表示されます。

これはあなたのシナリオに最適です。私もこれを使っています。

これがお役に立てば幸いです。乾杯。

于 2012-09-28T07:57:56.840 に答える
2

EDIT操作で別のビューを開く場合は、次を使用してコントローラーからビューにメッセージを渡すことができます

ModelAndView  mav = new ModelAndView();

次に、メッセージオブジェクトを次のように設定します

mav.addObject("message", "EDIT sucessfully completed");

最後に、ビュー名を設定します

mav.setViewName("views/afterEditOperation/");

ビューで${mesasage}としてメッセージを直接使用できます

于 2012-09-28T05:27:36.563 に答える
2

edit メソッドと delete メソッドの Controller メソッドで、Model にメッセージ文字列を次のように記述します。

編集

model.addAttribute("message", "Record Edited Sucessfully");
model.addAttribute("accountList", accountList);

消去

model.addAttribute("accountList", accountList);
model.addAttribute("message", "Record Deleted Sucessfully");

そして、displayAccounts.jsp で、このメッセージを次のように表示するコードを記述します。

<div>
  <span>${message}</span>
</div>
于 2012-09-28T05:35:48.660 に答える
1

この場合、 AJAXを使用できます。これにより、削除操作のために同じページからコントローラーにアクションを送信し、同じページのコントローラーからメッセージを取得して、コントローラーからの削除操作の成功/エラーメッセージを表示できます。

于 2012-09-28T05:14:34.250 に答える
1

コントローラーから表示ページにメッセージ (エラー/成功) を渡したい場合は、以下のコードが役立ちます。

@Controller
@RequestMapping("/controllerPath")
public class editDeleteController {

    @RequestMapping(method = RequestMethod.GET)
public String methodName(ModelMap model) { 
        model.addAttribute("message", "Message1");
                model.addAttribute("moremessage", "Message2");
        return "viewName";//veiwName here in your case it is displayPage 
    }
}

表示ページでは、

<h1>Message : ${message}</h1>

これがうまくいかない場合は、詳細に説明してください。

ありがとうございました


さて、私はあなたの要点を理解したと思います。このように考えてください。

@RequestMapping(method = RequestMethod.GET)
    public String editDelete(ModelMap model) {

        if(success)
        {
            model.addAttribute("result", "Success");
            return new ModelAndView("redirect:/displaytagView");//Chaining your controller so it will refresh your Accounts
        }else{
            model.addAttribute("result", "Error");
                        return "displayPage";
        }
    }

コントローラーを displayPage コントローラーにチェーンして、更新されたデータを表示します。この希望を試してみてください

于 2012-09-28T05:33:54.030 に答える
1

Spring は ModelMap 型オブジェクトを提供します。データを ModelMap 型オブジェクトに入れることができます。このオブジェクトは、アプリケーション全体でアクセスできます。ここでは、(条件に基づいて) 成功または失敗のいずれかの値を持つ文字列型変数を配置できます。後で jsp ページからこのモデル オブジェクトにアクセスできます。例を次に示します。

   @RequestMapping(value="/accounts/{id}/edit ")
 //  public String yourMethod(ModelMap model)
public String yourMethod(HttpServletRequest request,
      HttpServletResponse response,ModelMap model){
   if(someCondition){
     String result = "Success";
    model.addAttribute("result", result);
    }
      else{
          String result="failure";
          model.addAttribute("result", result);
        }
        // return "displayAccounts";
       return new YourControllerClass().yourMethodforAccountDisplay(request, response,model);//this is where you specify account display method with appropriate argument
   }

以下のようにjspページから結果にアクセスできます-

         ${result}

Spring 構成ファイルで viewresolver を有効にしてください。

于 2012-09-28T05:34:23.857 に答える