2012-04-03 2 views
0

変更:DBからコンポーネントを取得Struts2の:私は、メニューを作成していますし、各メニュー・コンポーネントのため、私は特定のID有する出発イテレータ値

<li id="ll1"><a href="javascript:{}" id="al1">Component</a></li> 

を、私は動的に表示する反復子タグを使用しました:

<s:iterator value="#session.loggedinUser.compNames" status="statusObject" var="parent"> 
<s:if test="#session.loggedinUser.compAccess[#statusObject.index] == 0"> 
    <li id="ll<s:property value="#statusObject.index"/>"> 
    <a href="javascript:{}" id="al<s:property value="#statusObject.index"/>" onclick="menuBar('none')"> 
    <s:property value="#parent"/> 
    </a> 
    </li> 
</s:if> 

イテレータは私が望むように動作し、メニューリストは完全に生成されます。しかし、それはのような、リストID = 0から始まる:

<li id="ll0"><a href="javascript:{}" id="al0" onclick="menuBar('Component')">Component</a> 

0で私の反復子リストの最初の読み取り指数を維持しながら1でリストIDの逢引を起動する方法はありますか? (私は私のリストの最初の価値を失いたくはありません!)

私がどこにいてもあなたを混乱させた場合は、明確にしてください。

ありがとうございます!

答えて

1

<s:property value="#statusObject.index"/>の代わりに<s:property value="#statusObject.index + 1"/>を意味します。この場合、... http://commons.apache.org/ognl/language-guide.htmlをすばやくスキャンすることをお勧めします。 Struts2はELとしてOGNLを使用します。通常、リストを別のものに戻すには、JSを使用してパラメータを変更してから提出する必要があります。

+0

おかげで、それは完全に働きました!私はあなたが単に+1を加えることができるとは知らなかった。私はそれを行うが、全体を捨てるだろう。私はバックエンドのラウンドアバウトソリューションを試すことから私を救ったので、私はあなたに与えるより多くの票を持っていればいいと思う。再度、感謝します! – user1073616

+0

いくつか注意してください:Javaの場合と同じようにオブジェクトメソッドを使用すると、静的メンバーに直接アクセスすることもできます(struts2の設定変更が必要です)。新しいオブジェクトを作成し、それを使って何かをして、良いものをたくさん作ってください。あなたができないことは、POJOのプロパティに対してafaikが繰り返し実行されることです(これは、繰り返しを提供すると期待されるインターフェイスの1つを提供すれば可能です)。今日の主題は、そのようなプロパティの文字列のリストを作成するタグを作成して、そのリストをイテレータのすべてのビューから使用できるようにすることです。 – Quaternion

1

は、不必要な計算を避けてください。

<s:property value="#statusObject.count"/> index is 0-based. 
    <s:property value="#statusObject.index"/> count is 1-based. 
関連する問題