[Seasar-user:2502] S2JSFのforEachを入れ子にしたときの動作
NISHIMURA Toshio
nishimura
2005年 8月 15日 (月) 16:20:10 JST
西村と申します。
S2JSFのforEachを使って階層メニューを作っていました。
<ul>
<span m:inject="s:forEach" m:items="#{shoppingDto.topCategories}"
m:var="e" m:varIndex="i">
<li><a href="" m:action="#{shoppingAction.goTopCategory}" >
<span m:value="#{e.name}">日用品</span>
<span m:inject="f:param" m:name="categoryId" m:value="#
{e.categoryId}"/></a></li>
<span m:inject="s:forEach" m:items="#{e.subCategories}" m:var="e1"
m:varIndex="j">
<li class="sub"><a href="" m:action="#
{shoppingAction.goSubCategory}">
<span m:value="#{e1.name}">スコップ</span>
<span m:inject="f:param" m:name="categoryId"
m:value="#{e1.categoryId}"/></a></li>
</span>
</span>
org.apache.myfaces.ALLOW_JAVASCRIPT=falseで実行すると、
それぞれのメニューには
http://localhost:8080/shoppingSite/category/index.html?
linkDummyForm:_link_hidden_=_id319_0:_id323&categoryId=1
といったリンクが張り付きます。
外側のメニュー(例ではtopCategory)のリンクは正常に動作する
のですが、内側のメニューは異常な動作をします。
内側のメニューのそれぞれの1番目をクリックすると、Actionク
ラスのCategoryIdプロパティには指定したcategoryIdでは
なく、常に同じ値が設定されます。その値は最後の内側のメニューに対
するcategoryIdの様です。2番目以降をクリックすると
Exception Errorになります。
exception
javax.servlet.ServletException: 1
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:
125)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:200)
...
root cause
java.lang.ArrayIndexOutOfBoundsException: 1
at org.seasar.jsf.component.ForEach.getCurrentRow
(ForEach.java:99)
at org.seasar.jsf.component.ForEach.setRowIndex(ForEach.java:
79)
at org.seasar.jsf.component.ForEach.broadcast(ForEach.java:131)
at org.seasar.jsf.component.ForEach.broadcast(ForEach.java:133)
at org.seasar.jsf.component.S2UIViewRoot.broadcastForPhase
(S2UIViewRoot.java:104)
...
ご確認いただけますか。よろしくお願いします。
Seasar-user メーリングリストの案内