[Seasar-user:8962] Re: [Teeda]1.0.8-SNAPSHOTを使用してのforEachについて

神啓介 [E-MAIL ADDRESS DELETED]
2007年 7月 5日 (木) 16:56:01 JST


神です。
先程のメールでは、説明が不足していたのと
根本的なところがズレていた為に、再度投稿しなおします。

Teeda1.0.7と1.0.8-SNAPSHOTで挙動が異なっていて、原因が分からず困っております。

ForEachでテーブルにラジオボタンを表示し、
そのラジオボタンのdisabled属性をDynamicPropertyで出力しています。
1.0.7では問題なく表示できるのですが
1.0.8-SNAPSHOTでは、NullPointerExceptionが発生します。

テストデータは5件あるので、1.0.7ではDynamicProperty用のメソッドが5回呼ばれます。
しかし、同じ条件であるにも関わらず1.0.8-SNAPSHOTではなぜか6回呼ばれ、
1回目に取得したデータがnullで落ちます。
(試しにロジックを通さず、データをログに出力するだけにすると、
2〜6回目は、1.0.7で表示できていた5件分のデータがきちんと出力されます。)

添付のスタックトレースの説明ですが、
getZzzDisabledでStringTokenizerに渡しているデータが1回目にnullになって落ちます。
推測では、PageクラスにはForEach用のデータがきちんとセットされているが、
HTMLのレンダリングの際にDynamicProperty用メソッドが余分に呼ばれているのではないかと思います。
(すみませんが、SNAPSHOTの場合Eclipseへのソースのアタッチがうまくいかず、
デバッグポイントを貼った確認ができておりません。)

案件のリリースまでにTeeda1.0.8を適用する予定なので、
早めの確認という意味でSNAPSHOTで動作させております。
不足の情報がありましたら、ご指摘ください。

以上、宜しくお願い致します。


java.lang.NullPointerException
 at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
 at java.util.StringTokenizer.<init>(StringTokenizer.java:204)
 at jp.co.bbb.aaa.web.bbb.ccc.dddPage.getZzzDisabled(dddPage.java:162)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:73)
 at org.seasar.framework.beans.impl.PropertyDescImpl.getValue(
PropertyDescImpl.java:188)
 at org.seasar.teeda.extension.render.TForEachRenderer.extractProperties(
TForEachRenderer.java:139)
 at org.seasar.teeda.extension.render.TForEachRenderer.encodeChildren(
TForEachRenderer.java:58)
 at javax.faces.component.UIComponentBase.encodeChildren(
UIComponentBase.java:339)
 at org.seasar.teeda.core.util.RendererUtil.renderChild(RendererUtil.java
:323)
 at org.seasar.teeda.core.util.RendererUtil.renderChildren(RendererUtil.java
:337)
 at org.seasar.teeda.core.util.RendererUtil.renderChild(RendererUtil.java
:325)
 at org.seasar.teeda.core.util.RendererUtil.renderChildren(RendererUtil.java
:337)
 at org.seasar.teeda.core.util.RendererUtil.renderChild(RendererUtil.java
:325)
 at org.seasar.teeda.core.util.RendererUtil.renderChildren(RendererUtil.java
:337)
 at org.seasar.teeda.extension.render.TViewRootRenderer.encodeBegin(
TViewRootRenderer.java:141)
 at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java
:330)
 at javax.faces.component.UIViewRoot.encodeBegin(UIViewRoot.java:100)
 at javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:240)
 at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:177)
 at org.seasar.teeda.extension.taglib.TViewTag.doStartTag(TViewTag.java:90)
 at
org.seasar.teeda.extension.html.processor.ElementProcessorImpl.processTag(
ElementProcessorImpl.java:145)
 at org.seasar.teeda.extension.html.processor.ElementProcessorImpl.process(
ElementProcessorImpl.java:138)
 at org.seasar.teeda.extension.html.processor.ElementProcessorImpl.process(
ElementProcessorImpl.java:119)
 at org.seasar.teeda.extension.html.impl.HtmlViewHandler.renderView(
HtmlViewHandler.java:145)
 at org.seasar.teeda.extension.html.impl.HtmlViewHandler.renderView(
HtmlViewHandler.java:135)
 at org.seasar.teeda.core.lifecycle.impl.RenderResponsePhase.executePhase(
RenderResponsePhase.java:38)
 at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java
:55)
 at org.seasar.teeda.core.lifecycle.LifecycleImpl.render(LifecycleImpl.java
:128)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:93)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(
ExtensionsFilter.java:122)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at jp.co.bbb.aaa.filter.aaaLoginFilter.doFilter(aaaLoginFilter.java:73)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at jp.co.bbb.aaa.filter.aaaAuthFilter.doFilter(aaaAuthFilter.java:92)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(
HotdeployFilter.java:63)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(
S2ContainerFilter.java:64)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java
:62)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:210)
 at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:174)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:117)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java
:542)
 at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
:151)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:870)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11Conn
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070705/f4b4f4ef/attachment.html 


Seasar-user メーリングリストの案内