12

私はまだSpringMVC(そしてそのことについてはjstl)に不慣れです。オブジェクトのリストから選択してオプションを設定しようとしています。c:forEachを使用してそれを行う方法を見つけましたが、form:optionsメソッドを機能させる方法があると考え続けています。

私は閲覧しましたが、items属性に関する公式ドキュメントに最も近いものはここにあります>> http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld .html#spring-form.tld.options

アイテム属性は

「内部の「オプション」タグの生成に使用されるオブジェクトのコレクション、マップ、または配列」

私の混乱は、それが探しているオブジェクトの種類、マップ、または配列です。彼らはどのようなフォーマットである必要がありますか?特にString型のコレクションまたは配列を探していますか?使ってもいいですか

List<MyObject>

もしそうなら、これが有効であるためにMyObjectは何を持っている必要がありますか(つまり、メソッド、変数)?

現在、MyObjectを使用しようとすると、次のような例外が発生します-

ConverterNotFoundException:com.example.MyObject型からjava.lang.String型に変換できるコンバータが見つかりません

コンバーターを作る必要がありますか?それはどこに行きますか?それはどのように機能しますか?私はそのエラーメッセージをグーグルで検索しましたが、私がやろうとしていることに固有のものは何も表示されていません...(ほとんどはRooに関する結果です)

MyObjectクラスは次のようになります。

public class MyObject{
    private String company;
    private Customer customer;
    private Address customerAddress;

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public Address getCustomerAddress() {
        return customerAddress;
    }

    public void setCustomerAddress(Address customerAddress) {
        this.customerAddress = customerAddress;
    }
}

そして私はそれをそのように使おうとしています:

<form:select path="myObjectList">
    <form:option value="0"/>
    <form:options items="myObjectList" /> 
</form:select>

この方法の何が間違っているのか具体的に知っている人はいますか?または、使用する必要があります

List<String> 

私がしていることを達成するために?

ここで編集してくださいスタックトレース>> http://pastebin.com/2c5XBCmG

4

2 に答える 2

24

Spring Documentationは、タグのitems属性について次のように述べています。form:options

items属性には通常、アイテムオブジェクトのコレクションまたは配列が入力されます。itemValueとitemLabelは、指定されている場合、それらのアイテムオブジェクトのBeanプロパティを参照するだけです。それ以外の場合、アイテムオブジェクト自体は文字列化されます。または、アイテムのマップを指定することもできます。その場合、マップキーはオプション値として解釈され、マップ値はオプションラベルに対応します。itemValueやitemLabelも指定されている場合は、item valueプロパティがマップキーに適用され、itemlabelプロパティがマップ値に適用されます。

簡単に言うと、カスタムBeanのリストをitems属性として使用する必要がある場合は、itemValueanditemLabel属性も使用する必要があります。個人的にはLinkedHashMap、選択タグを設定するためにマップ(具体的にはインスタンス)を使用することを好みますが、それは好みの問題です。

Spring Documentationの例を採用すると、コードは次のようになります。

 <form:select path="commandAttribute">
      <form:option value="-" label="--Please Select"/>
      <form:options items="${countryList}" itemValue="company" itemLabel="company"/>
 </form:select>

私は属性をとの両方として使用していcompanyますが、要件に合った属性を自由に選択できます。itemValueitemLabel

于 2013-03-20T16:29:26.210 に答える
2

通常、私はこのような春のタグでそれをやっています:

<springform:select path="myObjectList" id="selected_company">
    <springform:option value="0" label="--- Select One ---"></springform:option>
    <springform:options items="${myObjectList}" itemValue="company" itemLabel="company"></springform:options>
</springform:select>

名前空間宣言を含めることを忘れないでください:xmlns:springform = "http://www.springframework.org/tags/form"

于 2013-03-20T16:17:07.000 に答える