Ticket #7505

[Seasar-user:2812] ...ForEach.getCurrent
Eröffnet am: 2005-11-15 11:36 Letztes Update: 2005-11-25 18:52

Auswertung:
Verantwortlicher:
Typ:
Status:
Geschlossen
Komponente:
(Keine)
Meilenstein:
(Keine)
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Keine
Datei:
Keine

Details

内容が長さの違うリスト(lla, llb)を含むリスト(ll)を展開して
表示した後、長い方のリスト(lla)に含まれて、短い方のリスト
には含まれない位置の値をブラウザで修正して submit すると
org.seasar.jsf.component.ForEach.getCurrentRow で
java.lang.ArrayIndexOutOfBoundsException が発生します。

ちょっと分りにくい説明で申し訳ないですが、添付するソースで
a3 と表示される部分を変更して submit すると例外が発生し
ます。

java ソースで llb.add(new HogeDto("b3")); のコメントを
外し、
lla と llb の長さを同じにしてやるとこの例外は発生しません。

違う長さのリストを含めてはいけないといった制約があるの
でしょうか?
# だとすると結構、厳しい...
尚、検証は S2JSF 1.0.8 で行ないました。

- 例外情報 ----------
[exception]
javax.servlet.ServletException: 2

javax.faces.webapp.FacesServlet.service(FacesServlet.java:125)

org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)

org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:47)

org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:45)

org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)

[root cause]
java.lang.ArrayIndexOutOfBoundsException: 2

org.seasar.jsf.component.ForEach.getCurrentRow(ForEach.java:99)

org.seasar.jsf.component.ForEach.setRowIndex(ForEach.java:79)

org.seasar.jsf.component.ForEach.broadcast(ForEach.java:131)

org.seasar.jsf.component.ForEach.broadcast(ForEach.java:133)

org.seasar.jsf.component.S2UIViewRoot.broadcastForPhase(S2UIViewRoot.java:104)

org.seasar.jsf.component.S2UIViewRoot.processValidators(S2UIViewRoot.java:54)

org.seasar.jsf.lifecycle.LifecycleImpl.processValidations(LifecycleImpl.java:159)

org.seasar.jsf.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:81)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:109)

org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)

org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:47)

org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:45)

org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)


- hoge.html ----------
<html xmlns:m="http://www.seasar.org/maya">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=Windows-31j" />
<title>Hoge</title>
</head>
<body>
<form>
<span m:inject="s:forEach"
m:items="#{hogeListDto.hogeList}" m:var="e" m:varindex="i">
<span m:inject="s:forEach" m:items="#{e}" m:var="ee"
m:varindex="ii">
<input type="text" m:value="#{ee.hoge}" />
</span>
<br />
</span>
<input type="submit" value="submit"/>
</form>
</body>
</html>

- hogeDto.java ----------
package examples.jsf.dto;

public class HogeDto {
private String hoge;
public HogeDto(){}
public HogeDto(String hoge){
this.hoge = hoge;
}
public String getHoge() {
return hoge;
}
public void setHoge(String hoge) {
System.out.println(hoge);
this.hoge = hoge;
}
}

- hogeListDto.java ----------
package examples.jsf.dto;

import java.util.List;
import java.util.LinkedList;

public class HogeListDto {
private List hogeList;
public void setInit(String dummy){
System.out.println("HogeListDto.setInit() is
called.");
LinkedList lla = new LinkedList();
lla.add(new HogeDto("a1"));
lla.add(new HogeDto("a2"));
lla.add(new HogeDto("a3"));
LinkedList llb = new LinkedList();
llb.add(new HogeDto("b1"));
llb.add(new HogeDto("b2"));
// llb.add(new HogeDto("b3")); ここのコ
メントを外すと例外は発生しない
LinkedList ll = new LinkedList();
ll.add(lla);
ll.add(llb);
hogeList = ll;
}
public List getHogeList() {
return hogeList;
}
public void setHogeList(List hogeList) {

System.out.println("HogeListDto.setHogeList() is called.");
this.hogeList = hogeList;
}
}

- hoge.dicon ----------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD
S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="hogeListDto"
class="examples.jsf.dto.HogeListDto" instance="session" >
<property name="init">"foo"</property>
</component>
</components>

Ticket-Verlauf (3/3 Historien)

2005-11-18 17:40 Aktualisiert von: manhole
  • Verantwortlicher Update from (Keine) to manhole
2005-11-21 14:26 Aktualisiert von: manhole
  • Ticket Close date is changed to 2005-11-21 14:26
  • Status Update from Offen to Geschlossen
Kommentar
Logged In: YES
user_id=10369

version 1.0.9を修正しました。
次バージョンから反映されます。
2005-11-25 18:52 Aktualisiert von: manhole
  • Ticket Close date is changed to 2005-11-25 18:52
Kommentar
Logged In: YES
user_id=10369

[Seasar-user:2502][Seasar-user:2932]も同様の原因。

Dateianhangliste

Keine Anhänge

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden