2012-04-11 1 views
-2

私はこのようなプロファイルを持つ特性を有する:OGNL/Struts2でリストのリストを反復してインデックスを作成するにはどうすればよいですか?

public List<List<String>> getAvailablePassengersJS() 

Iは、内側リスト内の最初の5つの位置の各々のための1つの外側のリストの各要素の行と列を持つテーブルを作成したいです。 私はこれを使用してみました:

<tr> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
</tr> 

私は、データが正しく読み込まれている知っている:

<s:iterator value="ssn.docked.AvailablePassengersJS" var="line"> 
<tr> 
    <td><s:property value="line[0]"/></td> 
    <td><s:property value="line[1]"/></td> 
    <td><s:property value="line[2]"/></td> 
    <td><s:property value="line[3]"/></td> 
    <td><s:property value="line[4]"/></td> 
</tr> 
</s:iterator> 

しかし、出力が完全に空欄の100+行です。私はこれを行うとき:

<tr> 
    <td>[2236, Middle, Onbenbosin Bawed, true, You can book Tritho Fonand]</td> 
</tr> 

そして、私がこれを行うとき:

java.lang.ClassCastException: java.util.ArrayList incompatible with java.lang.String 

<s:iterator value="ssn.docked.AvailablePassengersJS" var="line"> 
<tr> 
    <td><s:property value="line"/></td> 
</tr> 
</s:iterator> 

を、私は例外を取得

<s:iterator value="ssn.docked.AvailablePassengersJS" var="line"> 
<tr> 
    <td><s:property/></td> 
</tr> 
</s:iterator> 

を私はこのような100+行を取得します

私は "行"がArrayListを解決することを知っています。 Everything I've read about OGNLは、[]表記で配列をインデックスできなければならないことを暗示しているようです。私は{}、#などの組み合わせをもっと試してきましたが、あなたに負担をかけないようにしています。 これはなぜ機能しないのか、私はそれを動作させるために何をする必要があるのか​​誰にも説明できますか?それは主に作品を

<s:iterator value="ssn.docked.AvailablePassengersJS" var="line"> 
<tr id="availPass<s:property value="#line[0]"/>"> 
    <td><s:property value="#line[1]"/></td> 
    <td><s:property value="#line[2]"/></td> 
    <td><s:checkbox key="#line[3]" value="false" theme="simple"/>&nbsp;Book</td> 
</tr> 
</s:iterator> 

:私はこのコードを使用下回っクォータニオンの提案をしようと

UPDATE

。残念ながら、チェックボックスでは失敗します:

<tr id="availPass151570"> 
    <td>Low</td> 
    <td>Andadicko Ostan</td> 
    <td><input type="checkbox" name="#line[3]" value="true" id="#line_3_"/><input type="hidden" id="__checkbox_#line_3_" name="__checkbox_#line[3]" value="true" />&nbsp;Book</td> 
</tr> 

私がキーを使用しない場合、idまたはvalueの組み合わせはどちらも動作しません。 Iちょうど名前とIDの両方がいる場合:

<td><s:checkbox name="#line[3]" id="#line[3]" value="false" theme="simple"/>&nbsp;Book</td> 

それを解決しない場合:私は名前だけを使用している場合は

<td><input type="checkbox" name="Book" value="true" id="#line3"/><input type="hidden" id="__checkbox_#line3" name="__checkbox_Book" value="true" /></td> 

<td><s:checkbox name="#line[3]" value="false" theme="simple"/>&nbsp;Book</td> 

それはどちらか動作しません。

<td><input type="checkbox" name="#line[3]" value="true" id="#line_3_"/><input type="hidden" id="__checkbox_#line_3_" name="__checkbox_#line[3]" value="true" />&nbsp;Book</td> 

idを使用すると、

<td><s:checkbox id="#line[3]" value="false" theme="simple"/>&nbsp;Book</td> 
    <td><input type="checkbox" name="<!-- FREEMARKER ERROR MESSAGE STARTS HERE -->... 
Expression parameters.name is undefined on line 23, column 32 in template/simple/checkbox.ftl. 
The problematic instruction: 
---------- 
==> ${parameters.name?html} [on line 23, column 30 in template/simple/checkbox.ftl] 

なぜチェックボックスのパラメータには、プロパティとは異なる構文が必要なのですか?

+0

私は何が尋ねられているのか分からず、(試した) - (生産した) - (しかし必要です)と質問が明確になったら投票を逆にします。必要なのは、大きなタグスープだけがないことです。 – Quaternion

+0

Quaternionは、彼が削除した情報を尋ねる長い往復のスレッドに言及していませんが、上記の状態で質問を残しました...私の結論は、評判が上位4%にある人は、 25年の間フィールドにいた誰かに簡単な質問があり、その技術はプライムタイムの準備ができていません。私はStruts-2が私のニーズに適合するまでStruts-1に固執します(Struts-2に自分のニーズを適応させる必要はありません)。 –

+0

質問を改善するために何かしましたか?あなたは何も複雑ではありません、私はあなたが欲しいものは簡単に答える/やることができると確信しています。私はすでに説明しました:どのようにstruts2チェックボックスが動作するかは反復処理の仕方から独立しています。私は時間をかけて元の質問に答え、その後質問が変わった。 Javaのfor-eachループがどのように機能するのかを尋ねるのは私のようなものです。他のストラット2の答えはこれを読んで考えて、これは意味をなさない。あなたが間違った質問をするだけで、別の人にも質問しても、質問は無料です。 – Quaternion

答えて

1
private List<List<String>> listOfLists; 

public List<List<String>> getListOfLists() { 
    return listOfLists; 
} 

public void setListOfLists(List<List<String>> listOfLists) { 
    this.listOfLists = listOfLists; 
} 




    <s:iterator var="list" value="%{listOfLists}"> 
     <s:iterator var="list" value="#list" status="stat"> 
       <s:property value="#list[#stat.index]"/> //by index. 
     </s:iterator><br/> 
    </s:iterator> 
+0

ご回答いただきありがとうございますが、私は内部のリストを反復したくありません。私はそれにインデックスを付けたい。関数が実行され、すべての値が表示されます。しかし、それは私が求めたものを私に与えるものではありません。内側のリストにインデックスを作成して、特定の値を引き出すことができます。いくつかはID用、その他は表示用、その他はホバーメッセージ用です。 –

+0

インデックスで内部のリストにアクセスしますか? –

0

それは古い質問ですが、他人のために、あなたは、例えば、チェックボックスのため%{listname[index]}"を使用する必要があります

<input type="checkbox" name="%{#line_3_[1]}" value="true" id="%{#line_3_[1]}"/> 
関連する問題