2

ユーザーがタグを入力する JSP に入力要素がある状況に陥っています。例: java、foo、bar、anotherTag など

<c:url var="saveUrl" value="/create" />
    <form:form modelAttribute="myAttribute" method="POST"
        action="${saveUrl}">

        <form:input path="myTitle" />
        <form:textarea path="myPost" />

        <form:input type="text" id="tagInput"path="???" />

        <input type="submit" value="create" />
</form:form>

この入力に対応する私のドメイン モデルでは、

private List<Tag> listOfTags

csv をリストにバインドする方法。パスに listOfTags を入力すると (これは明らかな理由で間違っています)、正しくないバインド例外が発生します。Spring フォームが適切に送信され、listOfTags が JSP に入力されたタグを取得するように、csv をリストに変換 (またはバインド) するにはどうすればよいですか。それを達成するための最良の方法は何ですか?

助けてください。

4

3 に答える 3

3

よくわかりませんが、これを試してみてください。簡単なhtml入力を行います:

<input type="text" id="tagInput" name="myTags" />

そして、コントローラーで次のようなことを行います。

@RequestMapping(value="/create", method=RequestMethod.POST)
public void create(..., @ModelAttribute("myAttribute") MyClass myAttribute,
                    @RequestParam("myTags") String myTags, ...) {
    ...
    myAttribute.setListOfTags(Arrays.asList(myTags.split(",")));
    ...
}

注:オブジェクトをバインドおよび変換するためのより一般的な方法については、PropertyEditorsおよびConvertersを参照してください。

于 2012-09-09T16:30:59.103 に答える
2

プロパティに直接バインドすることをお勧めしlistOfTagsます。そして、それを機能させるには、型の引数を 1 つ持つコンストラクターをクラスに追加するString(または静的メソッドを定義するvalueOf(String))だけです。Tag

于 2012-09-20T07:41:48.593 に答える
1

あなたがこのようなことをすることができるとかなり確信しています:

<c:forEach var="i" begin="1" end="10">
    <form:input type="text" path="listOfTags" />
</c:forEach>

ユーザーに各タグを個別のテキスト入力に入力させる場所。これは、Springがバインドを行うnameときに、同じ形式の複数の入力をリストに自動的にバインドするためです。

jQueryシュガーを使用して1つまたは2つだけを表示し、さらにタグ入力を表示するウィジェットを提供することができます。または、タグを追加するときのStackOverflowのように、単一のテキスト入力からの入力を入力するためのクールなJSを作成することもできます。

于 2012-09-10T01:15:45.393 に答える