6

私の質問は、フォームの「commandName」バインディングと入力の「path」バインディングが必要ですか?

ユーザーが一連の ajaxy 選択ボックスからデータを選択する必要があるワークフローがあります。したがって、フォームはどのモデルにも直接正確にマップされません。このフォームに対応するためだけに別のモデルを追加するのはかなり無意味に思えますが、このフォームのすべては ajax によって駆動されます。これで、いつでもクラシック フォームを記述してタグを選択できることがわかりましたが、たとえば、ここでスプリング タグを利用したいと思います。

<form:options items="${list}" itemLabel="name" itemValue="id"/>

これにより、フォーム項目を簡単に入力できます。さらに、プロジェクトの統一性を維持し、春のタグを使用したいと考えています。

このトピックについての考えや意見を知りたいです。

ありがとう!

PS: 私は ruby​​ on rails のバックグラウンドから来ており、多くのシンタックス シュガーに慣れています。

4

2 に答える 2

8

参考になるかわかりませんが、以下です。

フォームに「commandName」を設定しない場合、このプロパティのデフォルト値は「command」に設定されます。したがって、設定しない場合、バインドされたデータには「コマンド」という名前が付けられます。

必要に応じて、バインドされたデータの名前を設定できます。

================================================== ========================

データ バインディングを使用しないソリューションは次のようになります。

コントローラ メソッドに HttpServletRequest リクエスト パラメータを追加し、サーブレットのようにパラメータを取得します。

@Controller 
public class SomeController {

    @RequestMapping(value = "/formAction", method = RequestMethod.POST)
    public String controllerMethod(HttpServletRequest request){  
        // this way you get value of the input you want
        String pathValue1 = request.getParameter("path1");
        String pathValue2 = request.getParameter("path2");
        return "successfulView";
    }

}

PS .: 'path1' と 'path2' は、入力で設定したパス名です。Spring を適切に使用していないように見えますが、Spring が使用できるハックです。

フォームは次のようになります。

<form:form method="post" action="/formAction">
    <form:input path="path1" />
    <form:input path="path2" />
    <input type="submit" value="Submit"/>
</form:form>

役に立つことを願っています。

于 2012-07-25T17:10:58.647 に答える