自分のコントローラからオブジェクトのリスト(自分自身の参照を含む)を自分のビューから渡す必要があります。私は非常に多くのリンクを通過しましたが、満足のいく解決策を得られませんでした。 以下は私のシナリオとコードスニペットです。 私は質問と回答のリストを持つUIを持っています。各質問にはサブ質問があり、メイン質問の子となります。私のビュー(jsp)からコントローラに複雑なオブジェクトのリストを渡すには
私のコントローラに質問のリストとして完全なデータを渡したいと思います。 私のUIは次のようである: https://i.stack.imgur.com/yA8hN.png
モデルは以下のとおりです。
質問モデル:
public class Question {
private String question;
private String question_type;
private List<String> answers;
private List<Question> subQuestions;
.. getter and setter and constructors...
}
public class SurveyData {
private List<Question> data = new ArrayList<Question>();
... getter and setter and constructors...
}
コントローラー:私のjspで
@RequestMapping(value = "save", method = RequestMethod.POST)
public ModelAndView saveData(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("surveyData") SurveyData data) {
// code to save the data....
}
私はすべてのフェッチされたjavascriptのメソッドを持っていますデータと隠された入力値を保存します。
JSP /ビュー:
<form id="surveyForm" modelAttribute="surveyData" method="POST">
<table style="height: 200px;" border="0" width="70" cellspacing="0">
<tbody>
<tr style="height: 50px;">
<td>
<h2>
<span style="color: #00ccff;"> ADD NEW CALL </span>
</h2>
</td>
</tr>
<tr style="height: 30px;">
<td>
<div id="question-container">
<p style="padding-left: 1000px;">
<span style="color: #999999;"><a style="color: #999999;"
title="+ ADD NEW QUESTION" href="javascript:void(0);"
onclick="javascript:addNewQuestion();">+ ADD NEW QUESTION</a></span>
</p>
</div>
</td>
</tr>
<tr style="height: 70px;">
<td>
<input type="hidden" id="surveyData" name="surveyData" value="" />
<input type = "submit" value = "Save" onclick="javascript:saveData();"/>
<input type = "submit" value = "Cancel" onclick="javascript:cancel();"/>
</td>
</tr>
</tbody>
</table>
</form>
<script>
function saveData() {
var surveyData = {};
var questions = [];
// code to fetch the data and save it in questions array
.
.
.
surveyData.data = questions;
$("#surveyData").val(surveyData);
$("#surveyForm").submit();
}
</script>
私はmodelAttribuiteパラメータに任意のデータを取得しておりません。 このデータをコントローラに渡すにはどうすればよいですか?
ありがとうございます!
あなたは 'addNewQuestion()' javascript関数を示すことができる:
以外にも、あなたはJavaScriptであなたの
surveyData
を構築し、春が処理できる適切なHTTPリクエストに変換することができますか? –