[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 メーリングリストの案内