パラメータを入力してレコードのリストを照会するページがあります。クエリ ボタンをクリックすると、リストからアイテムがクリックされるとリストが取得され、レコードが表示された最初のページに戻ります。
別のボタン ' new ' を押してページをクリアし、空のページを返すと、URL にパラメーターがあり、ページ上のアイテムの値を設定します。URL にあるアイテムは CrimeRecNo です。
空のページを返したいのですが、どうすればこれを取り除くことができますか?
シナリオ
私は次のURLのページにいます
:http://adomain/crimeTrack/crime_registration.htm
レコードのリストを表示する別の URL に POST を実行するクエリをクリックします。
http://adomain/crimeTrack/crimeList.htm
上記の 2 のページで、POST を実行して次の URL に移動するレコードを 1 つ選択します。
http://adomain/crimeTrack/getCrime/6.htm - where 6 is the crimeRecNo.
私は今、上記の URL にいます。「NEW」ボタンをクリックして、上記の 1 の URL を含む空白のフォームを取得します。new を押すと、コード サンプル 4のコントローラー メソッドに対して POST が実行されます。
このメソッドは、GET メソッドにマップされた URL へのリダイレクトを行いますが、最終的な URL は次のようになります。http://adomain/crimeTrack/%20crime_registration.htm?crimeRecNo=6
値 6 は CrimeRecNo フィールドに残り、フォーム全体は消去されません。
コントローラーのメソッドは次のとおりです。
1. 最初のページ要求
@RequestMapping(value = "crime_registration.htm", method = RequestMethod.GET)
public ModelAndView loadPage(HttpServletRequest request,HttpServletResponse response, @ModelAttribute Crime crime,BindingResult result, ModelMap m, Model model, SessionStatus status,HttpSession session) throws Exception {
try {
logger.debug("In Crime Registration Controller");
myCriminalList.put("dbcriminalList",
this.citizenManager.getListOfCriminals());
...................
session.setAttribute("page", 0);
return new ModelAndView("crime_registration");
} catch (Exception e) {
logger.debug("Exception In CrimeRegistration Controller : "
+ e.getMessage());
return new ModelAndView("crime_registration");
}
}
2.アイテムのリストのクエリ
@RequestMapping(value = "crimeList.htm", method = RequestMethod.POST)
public ModelAndView handelCrimeList(@ModelAttribute Crime crime,
BindingResult result, ModelMap m, Model model) throws Exception {
if (crimeManager.getCrimesList(crime).size() <= 0) {
model.addAttribute("dbcriminals", myCriminalList);
........
model.addAttribute("crimeTypeList", crimeTypeManager.getCrimeTypeList(crime.getOffenceCatId()));
model.addAttribute("icon", "ui-icon ui-icon-circle-close");
model.addAttribute("results","Error: Query Caused No Records To Be Retrieved!");
return new ModelAndView("crime_registration");
}
model.addAttribute("crimes", crimeManager.getCrimesList(crime));
return new ModelAndView("crimeList");
}
3. 1商品のリクエスト/一覧から商品を選択した場合
@RequestMapping(value = "getCrime/{crimeRecNo}.htm", method = RequestMethod.POST)
public ModelAndView getCrime(@PathVariable Integer crimeRecNo,
@ModelAttribute Crime crime, BindingResult result, ModelMap m,
Model model, HttpServletRequest request,
HttpServletResponse response, HttpSession session) throws Exception {
try {
model.addAttribute("crime", crimeManager.getCrimeRecord(crimeRecNo));
session.setAttribute("crimeRecNo", crimeRecNo);
//model.addAttribute("victimList", citizenManager.getVictimListByCrimeRecNo(crimeRecNo));
} catch (Exception e) {
logger.error("Exception in CitizenRegistrationController - ModelAndView getCitizen "
+ e);
}
int crimeCatId = crimeManager.getCrimeRecord(crimeRecNo).getOffenceCatId();
logger.info("crime category number is : "+crimeCatId);
myCrimeTypeList.put("crimeTypeList", this.crimeTypeManager.getCrimeTypeList(crimeCatId));
model.addAttribute("dbcriminals", myCriminalList);
.....
session.setAttribute("crimeRecNo", crimeRecNo);
return new ModelAndView("crime_registration");
}
4. 新しいフォームのリクエスト
@RequestMapping(value = "crime_registration_new.htm", method = RequestMethod.POST)
public String loadNew(HttpServletRequest request,Model model,
HttpServletResponse response,SessionStatus status,HttpSession session) throws Exception {
status.setComplete();
return "redirect: crime_registration.htm";
//return new ModelAndView(new RedirectView("crime_registration.htm"));
}