1

以下は私のコードです...

@RequestMapping(value = "/submitnewstory", method = RequestMethod.POST)
    @ResponseBody
    public String save(@ModelAttribute("storyInsertForm") StoryInsertForm uploadForm, HttpSession session, Model map) {
}

HTMLコード:

<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">

</form:form>

何が起こっている??

モデル(この場合StoryInsertForm)に2つのフィールド、つまりString firstnameとがありString lastnameます。内で同じ変数を宣言する必要があります<form:form>、次のようなもの

<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
    <input type="text" name="firstname" id="firstname" />
    <input type="text" name="lastname" id="lastname" />
</form:form>

何が起こっているのかというと、最初の入力に値を与え、2番目の入力を無視すると、データはコントローラーに到達しません。ただし、すべての値を指定する場合、つまり両方の入力タイプのテキストに入力を指定する場合、コントローラーが検出され、すべてが正常に機能します。

別の観察によれば、フィールドの1つを宣言しない場合、つまり次のようになります。

<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
    <input type="text" name="firstname" id="firstname" />
<!--    <input type="text" name="lastname" id="lastname" /> -->
</form:form>

データは、上記のフィールド(この場合は名)で提供されたデータとともに転記されます。

概要

HTMLのフィールドを関連付けている場合は、入力タイプにいくつかの値を入力する必要があります。そうしないと、コントローラーに何も到達しません。

あなたの助けを楽しみにしています。

4

2 に答える 2

0

私が思うに、

使用するためにもフォーム入力タグをバインドする必要があります

春のフォームTagLib。

すなわち

<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
    <form:input  path="firstname" id="firstname" />
    <form:input  path="lastname" id="lastname" />
</form:form>

また、あなたのコントローラーのコーディングが何であるかわかりませんので、以下の点に言及する価値があると思います-

1>ページがRequestMethodGETとして返される関数で、フォームのモデル属性を追加します。

この場合、完全なコーディングは-

@RequestMapping(value = "/getpage.htm", method = RequestMethod.POST)
public String getPage(Model model){
        ........
        Other Code Snippet
        .........

    StoryInsertForm uploadForm = new StoryInsertForm();
    model.addAttribute(“storyInsertForm”,  uploadForm);
    return “login”;
}

2>また、BindingResultパラメーターをデータ保存メソッドに追加します。そうしないと、例外が発生するはずです-

したがって、saveメソッドのコードは-

@RequestMapping(value = "/submitnewstory", method = RequestMethod.POST)
    @ResponseBody
    public String save(@ModelAttribute("storyInsertForm") StoryInsertForm uploadForm, BindingResult result,  HttpSession session, Model map) {
     ...........
     Your Save Business Logic and Other DAO Method call etc...
     ...........
}

上記のコードで問題が解決することを願っています。

于 2013-03-09T17:01:56.050 に答える
0

私も同じ問題を抱えていました。私はそれを解決することはできませんでしたが、使用することによってそれを回避することができました

<form></form> 

それ以外の

 <form:form></form:form> 

それが役に立てば幸い!

于 2013-03-08T12:28:02.810 に答える