いくつかのデータフィールドを含むフォームがあり、対応するオブジェクトをいくつか渡して、Spring コントローラーでまとめて更新する必要があります。「フィールド[ネストされたオブジェクト]のオブジェクト[親オブジェクト]のフィールドエラー」の問題でSpringがエラーをスローしたため、私はそれを行うことができません。
私がこれらのオブジェクトを正しく扱っていないと私が想像していることについて。Spring MVC がオブジェクトを認識して適切に管理するために、このオブジェクトを操作するにはどうすればよいですか?
コードは次のとおりです。
対応する JSP ページ:
<form id="fmActivity"
method="post"
accept-charset="iso-8859-1,utf-8"
novalidate>
<div class="fitem">
<label>Description</label>
<textarea id="description" name="description" class="easyui-validatebox" required cols="40" rows="5">
</textarea>
</div>
<div class="fitem">
<label>Comments</label>
<textarea id="comments" name="comments" class="easyui-validatebox" cols="40" rows="5">
</textarea>
</div>
<!-- HERE ARE THE PROBLEMS: PROJECT, EXECUTOR AND DATETIME FIELDS ARE NOT PROCESSED BY SPRING
<div class="fitem">
<label>Project (it would be hidden)</label>
<input id="project" type="hidden" name="project" class="easyui-validatebox" required value="${project}">
</div>
<div class="fitem">
<label>Executor (it would be hidden)</label>
<input id="executor" type="hidden" name="executor" class="easyui-validatebox" required value="${executor}">
</div>
<div class="fitem">
<label>Date/Time</label>
<input id="dateTime" class="easyui-datetimebox" required name="dateTime" style="width:150px">
</div>
-->
<div class="fitem">
<label>Tag</label>
<input name="tag" class="easyui-validatebox" required>
</div>
<input id="button1" name="button1" type="submit" value="submit">
</form>
ボタンのクリックを処理する JQuery コード:
$('input#button1').click( function() {
$.ajax({
url: 'ActivityUpdate',
type: 'post',
dataType: 'json',
data: $('form#fmActivity').serialize(),
success: function(data) {
alert(data);
},
error: function(errobj, str, errt){
alert(str + " " + errt);
}
});
});
そしてMVCコントローラー:
@RequestMapping(value = "/ActivityUpdate")
public String update(Activity activity, HttpSession httpSession) {
Session sess = (Session) httpSession.getAttribute("hibSess");
ActivityDAO actDao = new ActivityDAO(sess);
actDao.persist(activity);
return "forward:ActivityList";
}
オブジェクト PROJECT、EXECUTOR、および DateTime を使用せずに処理を実行しようとすると、機能します。手伝って頂けますか?ありがとう!