こんにちは、jqGrid の初心者です。jqGrid 4.4 を使用しています。私はOlegによるアプローチをうまく使用しました
クライアントのみでモーダル フォームを使用して jqGrid に新しい行を追加する
行をローカルに追加します。私が直面している2つの問題があります
- 最後に追加されていない行、どうすればこれを達成できますか?
- 以下のように、ボタンをクリックするとすべての行が送信されます。
エラーブロックで常にアラートを受け取りますか?
$("#sendButton").click(function(){
var gridData = jQuery("#list").getRowData();
var myJSONString = JSON.stringify(gridData);
var postData = myJSONString.replace(/[\"]/g, '\"');
alert("JSON serialized jqGrid data:\n" + postData);
$.ajax({
type: "POST",
url: CONTEXT_ROOT+"/json",
data : postData,
dataType:"json",
contentType: "application/json; charset=utf-8",
success: function(response, textStatus, xhr) {
alert("success");
},
error: function(xhr, textStatus, errorThrown) {
alert("error:"+errorThrown+" textStatus : "+textStatus);
}
});
});
Javaコントローラーに保存したら、何を返す必要があるのか わかりません。これがコントローラーのコードです。私も戻り値を無効にしてみましたが、同じ結果になりました。また、jsp からの json オブジェクトのリストをドメイン オブジェクトのリストにバインドするためのより良い方法があります。で説明されているように、 @RequestBody を使用してフォームからのようなオブジェクトが 1 つしかない場合に Binding を試しました
http://blog.springsource.org/2010/01/25/ajax-simplifications-in-spring-3-0/
@RequestMapping(value = "/json", method = RequestMethod.POST)
public ModelAndView saveNewCasePackOptions(@RequestBody List<Map> json) {
for(Map mJson : json){
String idCasePkOptions = (String)mJson.get("idCasePackOptions");
Long idCasePackOptions = (idCasePkOptions.isEmpty())?null:new Long(idCasePkOptions);
Short cypharecommended = new Short((String)mJson.get("cypharecommended"));
Short distributorapproved = new Short((String)mJson.get("distributorapproved"));
String heightStr = (String)mJson.get("height");
Double height = (heightStr.isEmpty())?null:new Double(heightStr);
String lengthStr = (String)mJson.get("length");
Double length = (lengthStr.isEmpty())?null:new Double(lengthStr);
String weightStr = (String)mJson.get("height");
Double weight = (weightStr.isEmpty())?null:new Double(weightStr);
String widthStr = (String)mJson.get("width");
Double width = (widthStr.isEmpty())?null:new Double(widthStr);
String stateString = (String)mJson.get("statuscode");
stateString = (stateString.contains("Green"))?"1":"0";
Short statuscode = new Short(stateString);
CasePackOptions casePkOpt = new CasePackOptions(idCasePackOptions, cypharecommended, distributorapproved, height, length, statuscode, weight, width);
System.out.println(casePkOpt);
casePackOptionsService.save(casePkOpt);
}
ModelAndView mav = new ModelAndView();
mav.setViewName("casepackoptions/listPage1.jsp");
return mav;
}
どんな助けでも大歓迎です。