私はSpring MVCとJSPの開発に慣れていないので、私が愚かなことをしていると優しく言ってください:P そう言った、質問:
私はSpring MVCを少し勉強し、うまく機能するコードを手に入れました。今、明らかにばかげた問題に行き詰まっています。JSP に渡したオブジェクトをコントローラに戻すことができないようです。私がする必要があるのは、ユーザーが2つのテキストボックスに入力し、ボタンをクリックすると、システムがデータベースにクエリを実行し、ユーザーが検索した要素を見つけ、見つかった要素を配列「capitolospesas」に追加して再レンダリングすることです配列内のすべてのオブジェクトを含む jsp (前のもの + 追加したもの)。
私が作成したサイクルは、コントローラー ---> jsp ---> コントローラー ---> jsp です。マッピング「newProposte」は空白の値でページ newEditProposte.jsp を初期化し、jsp は表示する値を正しく取得し、ユーザーは必要なものを編集/入力し、送信ボタンをクリックします。コントロールはメソッド「selectCapitoloSpesaFromProposte」に渡され、そこでシステムはクエリを実行して結果を配列「capitolospesas」に追加しますが、新しいオブジェクトを追加すると常に空になるため、ページには最後に見つかった要素のみが表示されます。
@RequestMapping("/newProposte")
public ModelAndView newProposte()
{
System.out.println("ProposteController.newProposte()");
ModelAndView mav = new ModelAndView();
mav.addObject("proposte", new ProposteWeb());
mav.addObject("newFlag", true);
mav.addObject("capitolospesas", new HashSet<Capitolospesa>());
mav.setViewName("proposte/newEditProposte.jsp");
return mav;
}
@RequestMapping("/selectCapitoloSpesaFromProposte")
public ModelAndView selectCapitoloSpesaFromProposte(@ModelAttribute ProposteWeb proposte, @ModelAttribute HashSet<Capitolospesa> capitolospesas)
{
ModelAndView mav = new ModelAndView();
mav.addObject("proposte", proposte);
mav.addObject("newFlag", true);
capitolospesas.add(capitolospesaDAO.findCapitolospesaByCapitoloSpesaCapitoloAndCapitoloSpesaArticolo(proposte.getCapitoloSpesaCapitoloProposte(), proposte.getCapitoloSpesaArticoloProposte()));
mav.addObject("capitolospesas", capitolospesas);
mav.setViewName("proposte/newEditProposte.jsp");
return mav;
}
jsp:
<script language="Javascript">
function selectCapitoloSpesa()
{
alert("selectCapitoloSpesaFromProposte");
document.getElementById("tabProposteForm").action = "${pageContext.request.contextPath}/selectCapitoloSpesaFromProposte";
submitForm();
return true;
}
function submitForm()
{
alert("submit");
document.getElementById("tabProposteForm").submit();
return true;
}
</script>
....
....
the form
....
....
the foreach iterating on the array "capitolospesas" showing it in a table
....
....
<input type="button" value="selectCapitoloSpesaFromProposte" name=selectCapitoloSpesaFromProposte onclick="return selectCapitoloSpesa();">
クリックしたボタン(さまざまなボタンがあります)に応じて、フォームの動作を変える必要があるため、このように投稿しました。
パラメータをjspページに渡すには、パラメータをModelAndViewオブジェクトに追加する必要があるというさまざまなチュートリアルを読みましたが、これを正しく行いました。jsp では、渡したすべてのオブジェクト (この場合は "newFlag"、"capitolospesas"、"proposte") にアクセスできます。私が理解していないのは、それらのオブジェクトがjspから戻ってきたときにどのようにそれらのオブジェクトを取得できるかということです? これまでは、ページ上にある唯一のエンティティを保存、編集、または削除するために必要な唯一のパラメーターの前に @ModelAttribute アノテーションを使用していましたが、ページから複数のオブジェクトを取得する必要があります。上に貼り付けたコードで、@ModelAttribute アノテーションを複数回使用しようとしましたが、成功しませんでした。オブジェクト「proposte」にはユーザーが入力したものが正しく入力されていますが、コードをデバッグして、メソッドが「
誰か提案があれば、投稿してください。