1

グループ化されたオブジェクトのリストを ArrayList に持っていて、それを html の順序付けされていないリストとして jsp に表示したいと考えています。説明は添付画像をご覧ください。画像はこちら

これまでのところ、以下のように Java POJO クラスを作成しました。

public class CountData {

    private String country;
    private String state;
    private String city;
    private String mfc;
    private int count;

    public CountData(String country, String state, String city, String mfc, int count) {
        this.country = country;
        this.state = state;
        this.city = city;
        this.mfc = mfc;
        this.count = count;
     }

     public String getCity() {
       return city;
     }

     public void setCity(String city) {
       this.city = city;
     }
     // Other getters ans setters
}

オブジェクトをグループ化されたリストに格納するためのクラスも作成しました。このクラスは、テスト用に作成されたものです。実際の例では、SQL ステートメントの戻りによってグループから生成されます。実際の例では、データは異なり、より複雑であるため、いくつかの簡単なサンプル データで説明すると考えられます。グループ化は任意の順序で行うことができます。

    public class CountList {

    private List<CountData> dataList;

    public CountList() {
        if (this.dataList == null) {
            this.dataList = new ArrayList<CountData>();
        }
        //Sorted Grouped List
        this.dataList.add(new CountData("China", "State3", "City3", "Female", 40));
        this.dataList.add(new CountData("India", "State1", "City1", "Female", 10));
        this.dataList.add(new CountData("India", "State1", "City1 ", "Male", 40));
        this.dataList.add(new CountData("India", "State2", "City2", "Female", 25));
        this.dataList.add(new CountData("India", "State2", "City2", "Male", 30));
        this.dataList.add(new CountData("USA", "IL", "Chicago", "Female", 20));
        this.dataList.add(new CountData("USA", "IL", "Chicago", "Male", 50));
        this.dataList.add(new CountData("USA ", "IL", "Schaumburg", "Female", 17));
        this.dataList.add(new CountData("USA", "IL", "Schaumburg", "Male", 30));
        this.dataList.add(new CountData("USA", "WI", "Milwaukee", "Children", 10));
        this.dataList.add(new CountData("USA", "WI", "Milwaukee", "Female", 25));
        this.dataList.add(new CountData("USA", "WI", "Milwaukee", "Male", 40));
        this.dataList.add(new CountData("USA", "WI", "Madison", "Female", 18));
        this.dataList.add(new CountData("USA", "WI", "Madison", "Male", 30));
    }
    public List<CountData> getDataList() {
        return dataList;
    }
    public void setDataList(List<CountData> dataList) {
        this.dataList = dataList;
    }
}

今、私はそれを次のような HTML 順序付きリストに変換したいと思います:

<ul>
    <li>China (40)
        <ul>
            <li>State3 (40)
                <ul>
                    <li>City3 (40)
                        <ul>
                            <li>Female (40)</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
    <li>India (115)
        <ul>
            <li>State1 (50)
                <ul>
                    <li>City1 (50)
                        <ul>
                            <li>Female (10)</li>
                            <li>Male (40)</li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>State2 (65)
                <ul>
                    <li>City2 (65)
                        <ul>
                            <li>Female (25)</li>
                            <li>Male (30)</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
    <li>USA (245)
        <ul>
            <li>IL (117)
                <ul>
                    <li>Chicago (70)
                        <ul>
                            <li>Female (20)</li>
                            <li>Male (50)</li>
                        </ul>
                    </li>
                    <li>Schaumburg (47)
                        <ul>
                            <li>Female (17)</li>
                            <li>Male (30)</li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>WI (128)
                <ul>
                    <li>Milwaukee (75)
                        <ul>
                            <li>Children (10)</li>
                            <li>Female (25)</li>
                            <li>Male (40)</li>
                        </ul>
                    </li>
                    <li>Madison (48)
                        <ul>
                            <li>Female (18)</li>
                            <li>Male (30)</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

これを達成するための最良の方法は何でしょう。サンプルコードは役に立ちます。私は子供の取得に問題があり、各親の数を取得しています。実際の例では、データは異なり、より複雑であるため、いくつかの簡単なサンプル データで説明すると考えられます。グループ化は任意の順序で行うことができます。

ありがとうございました。

4

1 に答える 1

1
public String convertToHTML(ArrayList<CountData> stuffs){
    StringBuilder sb = new StringBuilder()  
    sb.append(“&lt;ul>\n”);
    for(CountData cd : stuffs){
        sb.append(“&lt;li>”+cd.getCountry()+” (“+cd.getCount()+”)\n”);
        sb.append(“\t<ul>);
        sb.append(“\t\t<li>”+cd.getState()+” (“+cd.getCount()+”)\n”);
        sb.append(“\t\t\t<ul>);
        sb.append(“\t\t\t<li>”+cd.getCity()+” (“+cd.getCount()+”)\n”);
        sb.append(“\t\t\t\t<ul>);
        sb.append(“\t\t\t\t<li>”+cd.getMfc()+” (“+cd.getCount()+”)</li>\n”);
        sb.append(“\t\t\t\t</ul>);
        sb.append(“\t\t\t</li>);
        sb.append(“\t\t</ul>);
        sb.append(“\t</li>);
        sb.append(“&lt;/ul>);
        sb.append(“&lt;/li>);
        sb.append(“\n”);
    }
    return sb.toString()
}
于 2015-05-04T19:41:54.513 に答える