6

私はSpringが初めてで、問題があります。コントローラーに情報を送信するために使用されるフォームがあります。フォームをバックアップする Bean は必要ないか、したくないので、次のようにcommandNameフォームの属性を空白のままにしました。

<form:form action="getReportFile.html" method="post">
            <table>
                <tr>
                    <td><form:label path="field1">Field1:</form:label></td>
                </tr>
                <tr>
                    <td><form:select path="field1" items="${FieldMap}" />                        
                    </td>
                </tr>
               <tr>
                   <td><form:label path="field2">Field2:</form:label></td>
               </tr>
               <tr>
                   <td><form:input path="field2"/></td>
               </tr>
               <tr>
                   <td><input type="submit" value="Submit" /></td>
               </tr>
           </table>
       </form:form>

次のエラーが表示されます。

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute

ここで、値を指定しないとデフォルトが使用されることがわかりましたが、他に何か設定する必要がありますか? に豆を入れるべきですか?その豆はどうですか?commandName'command''command'dispatcher-servlet.xml

コントローラーに情報を送信するためのフォームが必要です。それを裏付けるために本当にBeanを作成する必要がありますか?

4

2 に答える 2

8

コマンド オブジェクトがまったく必要ない場合は、Spring フォームを使用せず、単純に HTML フォームを使用してください。

だから、変えて

<form:form action="getReportFile.html" method="post">
     .
     .
     .
</form:form>

<form action="getReportFile.html" method="post">
     .
     .
     .
</form>

コマンド オブジェクトは必須ではありません。<form:form></form:form>以下のライブラリを使用するなど、Spring のフォームを使用する場合のみ必須です。

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

request.getParameter("paramName")HTML フォームを使用する場合は、メソッドを使用してリクエスト パラメータを受け取る必要があります。


フォーム バッキング Bean がない場合は、Spring タグが必要なため使用できません。そのタグの「パス」属性は、データ バインディング用のモデル Bean のプロパティへのパスを指定することになっています。

http://forum.springsource.org/showthread.php?83532-how-to-have-form-without-command-object&p=279807#post279807

于 2013-02-05T01:08:25.090 に答える
3

Spring MVC でバッキング Bean なしでフォームを作成できるかどうかはわかりませんが、Bean を使用しないと Spring MVC を十分に活用できないと思います。使用しているフォーム タグ (form:input など) は、バッキング Bean のプロパティにバインドされます。これにより、検証、エラー メッセージ、型変換などをアタッチできます。単にフォームを Spring コントローラーに投稿することを意図していますか? 、サーバー上のすべてのフォーム フィールドを "request.getParameter('field1')" のようなコードで処理しますか? 次に、プレーンな HTML フォームを使用することをお勧めします。

于 2013-02-04T22:58:53.490 に答える