0

String配列を持つフォームクラスがあります。文字列配列の値を設定しています。この配列値をJSPページに1つずつ出力する必要があります。私が書いたコードは次のとおりです。

paxList = getPaxList(id);

List<String> passengerName = new ArrayList<String>();
List<Double> passengerAge = new ArrayList<Double>();

for(int i=0; i < paxList.size(); i++){
    passengerName.add(paxList.get(i).getPassengerName());
    passengerAge.add(paxList.get(i).getPassengerAge());
}

bookingsForm.setPassengerName(passengerName.toArray(new String[paxList.size()]));
bookingsForm.setPassengerAge(passengerAge.toArray(new Double[paxList.size()]));

次に、からの値を出力する必要がありますPassengerName

JSPページでこのように試しました

<logic:iterate id="currentPassName" property="passengerName" >
    <bean:write name="currentPassName" />
</logic:iterate>

しかし、これは私にはうまくいきません。誰かが私を導くことができますか?

4

2 に答える 2

2

乗客のリストを名前と年齢の 2 つのリストに分割しないでください。それが物事を難しくしている理由です。paxListフォームに直接保存するだけです。

これが完了したら、非推奨の struts ロジックと Bean タグではなく、JSTL を使用してください。

<c:forEach items="${bookingsForm.paxList}" var="passenger">
    Passenger <c:out value="${passenger.name}" is aged ${passenger.age}<br/>
</c:forEach>

そのままでは機能しない理由を説明するには:

<logic:iterate id="passRecord" property="passengerName" >
    <bean:write name="passengerName" property="passRecord" />
</logic:iterate>

上記は、フォームのpassengerName配列の要素 (passengerNamesいくつかあるため、名前を付ける必要があります) を反復処理しpassRecord、ループ内で使用する必要があるという名前のページ属性を定義します。

passengerNameは文字列配列であるためpassRecord、文字列です。passRecordそして、ループ内で のプロパティにアクセスしようとしていますpassengerName。にメソッドはありませgetPassRecord()String[]。乗客名は に保存されpassRecordます。あなたはそれを書く必要があります。適切な名前の変数を使用すると、より明確になります。

<logic:iterate id="currentPassengerName" property="passengerNames" >
    <bean:write name="currentPassengerName" />
</logic:iterate>
于 2012-07-24T13:27:46.340 に答える
0

jstl を使用すると、次のように実行できます。

<table>
    <c:forEach var = "oneName" items = "${passengerName}" >
    <tr><td> ${oneName}</td</tr>
    </c:forEach>
</table>
于 2012-07-24T13:20:53.160 に答える