保存、更新、クエリ用の 3 つのボタンを持つフォームがありますが、サーバー側でユーザーがクリックしたボタンを知りたいです。request.getParameter("action") と request.getAttribute("action") を使用してみましたが、両方とも null を返します。サーバーでこれを取得する方法はありますか?セッションに「アクション」値を保存できますか? もしそうなら、セッション変数を作成して保存するにはどうすればよいですか?
コード
<button class="btn" value="save" id="action"></button>
<button class="btn" value="update" id="action"></button>
<button class="btn" value="query" id="action"></button>
基本的に、サーバーへの再投稿を避けようとしています。私は POST/redirect/GET パターンを使用することを想定していますが、私のメソッドはリダイレクトをサポートしておらず、フォームが変更されてエラーが発生した場合でも、サーバーの検証を返すことができません。
コントローラ
@RequestMapping(value = "crime_registration_save.htm", method = RequestMethod.POST)
public ModelAndView handleSave(@Valid @ModelAttribute Crime crime,HttpServletRequest request,
HttpServletResponse response,BindingResult result, ModelMap m, Model model) throws Exception {
String action = request.getParameter("action");
logger.info("The requested action is "+ action);
if (result.hasErrors()) {
logger.debug("Has Errors In crime_registration_save");
model.addAttribute("dbcriminals", myCriminalList);
model.addAttribute("dbvictims", myVictimList);
model.addAttribute("status", myStatusList);
model.addAttribute("crimeCategory", myCrimeCategoryList);
model.addAttribute("crimeLevel", myCrimeLevelList);
model.addAttribute("officers", myOfficerList);
model.addAttribute("victimList", crime.getVictims());
model.addAttribute("criminalList", crime.getCriminals());
model.addAttribute("crimeTypeList",
crimeTypeManager.getCrimeTypeList(crime.getOffenceCatId()));
model.addAttribute("icon", "ui-icon ui-icon-circle-close");
model.addAttribute("results", "Error: Unable to Save Record!");
return new ModelAndView("crime_registration");
}
logger.debug("No errors going to preform save");
int crimeRecNo;
crimeRecNo = crimeManager.saveCrime(crime);
model.addAttribute("dbcriminals", myCriminalList);
model.addAttribute("dbvictims", myVictimList);
model.addAttribute("status", myStatusList);
model.addAttribute("crimeCategory", myCrimeCategoryList);
model.addAttribute("crimeLevel", myCrimeLevelList);
model.addAttribute("officers", myOfficerList);
model.addAttribute("save", "disabled");
model.addAttribute("victimList", crime.getVictims());
model.addAttribute("criminalList", crime.getCriminals());
model.addAttribute("crimeTypeList",
crimeTypeManager.getCrimeTypeList(crime.getOffenceCatId()));
model.addAttribute("crimeRecNo", crimeRecNo);
model.addAttribute("crimeRecordNoStatus", "true");
model.addAttribute("icon", "ui-icon ui-icon-circle-check");
model.addAttribute("results", "Record Was Saved");
return new ModelAndView("crime_registration");
}
jquery
function submitPage(urlMapping,method,action) {
alert(urlMapping);
document.getElementById("crime_registration").action = urlMapping;
document.getElementById("crime_registration").target = "_self";
document.getElementById("crime_registration").method = method;
document.getElementById("crime_registration").submit();
$('#action').val(action);
alert($('#action').val());
return false;
}