3

rich:orderingList コントロールの使用方法の例を教えてもらえますか? 希望どおりにデータを表示できるようになりましたが、実際には、変更された順序をサーバーに伝達したいと考えています。その件については何も見つかりません。

<rich:orderingList value="#{countryHandler.data}" var="country">
    <rich:column>
        <f:facet name="header">
            <h:outputText value="id"/>
        </f:facet>
        <h:outputText value="#{country.id}"/>
    </rich:column>
    <rich:column>
        <f:facet name="header">
            <h:outputText value="code"/>
        </f:facet>
        <h:outputText value="#{country.code}"/>
</rich:column>

そして、バッキング Bean には、List<Country> だけを返すプロパティ データが定義されています。

繰り返しますが、変更されたオブジェクトの順序をサーバーに戻すにはどうすればよいですか?

4

2 に答える 2

2

フォームを送信すると、Seam はリスト (#{countryHandler.data}) を並べ替えますので、この時点でアクセスできるはずです。これをテストする簡単な例を作成しました。すべてのファイルは次のとおりです。

CountryHandler.java

@Name("countryHandler")
@Scope(ScopeType.CONVERSATION)
public class CountryHandler {

    @In(create=true)
    private CountryService countryService;

    private List<Country> data;

    public void loadCountries() {
        this.data = this.countryService.getCountryList();
    }

    public List<Country> getData() {
        return data;
    }

    public void setData(List<String> data) {
        this.data = data;
    }

    public void submit() {
        //check the list order here.  You should find it's ordered...
    }
}

国.xhtml

...snip...

<rich:orderingList value="#{countryHandler.data}" var="country">
    <rich:column>
        <f:facet name="header">
            <h:outputText value="id"/>
        </f:facet>
        <h:outputText value="#{country.id}"/>
    </rich:column>
    <rich:column>
        <f:facet name="header">
            <h:outputText value="code"/>
        </f:facet>
        <h:outputText value="#{country.code}"/>
</rich:column>
</rich:orderingList>

<h:commandButton action="#{countryHandler.submit()}" value="Submit" />

...snip...

国.page.xml

<page>
    ...snip...

    <begin-conversation join="true"/>

    <action execute="#{countryHandler.loadCountries()}"/>

    ...snip...
</page>

以下も参照してください。

于 2009-07-31T10:31:09.990 に答える