1

私はjspを初めて使用し、エクスポート機能の表示タグに興味があります。たとえば、私はこの単純な構造を持っています:

 public class MyActionBean implements ActionBean{
      List<Country> countries;
      // getters and setters and some other un-related logic
 }


public class Country {
    List<String> countryName;
    List<Accounts> accounts;
    // getters and setters and some other un-related logic
}


public class Accounts {
    private FinancialEntity entity;
    // getters and setters and some other un-related logic
}

public class FinancialEntity {
    String entityName;
    // getters and setters and some other un-related logic
}

ここで、国名とエンティティ名 (FinancialEntity) の 2 つの列を持つテーブルを作成したいと思います。

     <display:table id="row" name="${myActionBean.countries}" class="dataTable" pagesize="30" sort="list" defaultsort="8"  export="true" requestURI="">
        <display:column title="Country" sortable="true" group="1" property="countryName" />
        <display:column title="Financial Entity"> somehow get all of the entity names associated with the country? </display:column>
     </display:table>

したがって、基本的には、アカウントを繰り返し処理して、すべての金融エンティティを取得したいと考えています。JSPでdisplaytagを使用してそれを行う方法がわかりません。c:forEach と display:setProperty タグを使用しようとしましたが、このタグはこれらの目的ではないようです。私は致命的に立ち往生しています:(

前もって感謝します :)

4

1 に答える 1

1

jsp で作業を行う必要はありません。モデルオブジェクトとコントローラーでその作業を行うことができます。

public class CountryFinancialEntity {
    private Country country;
    public CountryFinancialEntity(Country country) {
        this.country = country;
    }
    public String getCountryName() {
        return this.country.getName();
    }
    public List<String> getFinancialEntityNames() {
        List<String> financialEntityNames = new ArrayList<String>
        for (Account account : this.country.getAccounts() {
            financialEntityNames.add(account.getFinancialEntity().getName();
        }
    }
}

次に、すべての国についてこれらのオブジェクトのリストを作成し、このオブジェクトをビュー (jsp) に渡します。

これにより、表示タグの使用が簡素化され、ac:forEach タグを使用できるようになることを願っています。

編集

この作業を jsp で行う必要がある場合。

国のリストを渡すことをお勧めします。MyActionBean は実際には役に立たず、混乱を招く可能性があります。

jsp は次のようになります。

<display:table id="country" name="countries">
    <display:column title="Country Name" property="name" />
    <display:column title="Financial Name" >
        <ul>
        <c:forEach var="account" items="${country.accounts}">
            <li>${account.financialEntity.name}</>
        <c:forEach>
        </ul>
    </display:column>
</display:table>

ところで、これはおそらく CountryFinancialEntity がどのように見えるかを考えるようになる可能性が最も高いですが、他の列を作成する場合は、CountryFinancialEntity オブジェクトのようなものを使用しますが、代わりに TableRowModel を呼び出します。

于 2013-10-16T02:52:14.433 に答える