[Seasar-user:3895] [S2JSF(Teeda)] 自作のvalidatorを組み込むとNullPointerException

O.K.U. [E-MAIL ADDRESS DELETED]
2006年 6月 19日 (月) 16:33:34 JST


O.K.U.@Teeda版への乗り換え検討中です。お世話になります。

S2JSF 1.1.0 Beta1 (Teeda版)で、自作のvalidatorを組み込むと
org.seasar.jsf.util.UIComponentUtil.callValidators()で
NullPointerException が発生します。

S2JSF Example 1.1.0 Beta1 を使った再現手順

(1)
以下のソースを追加、コンパイルしてできたTestValidator.classを
WEB-INF/classes/examples/jsf/validator (ディレクトリを作成)
に配置

− src/main/java/examples/jsf/validator/TestValidator.java] −−−−−−−−−−

package examples.jsf.validator;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;

public class TestValidator implements Validator {

    public void validate(FacesContext context,
                         UIComponent component,
                         Object value){
        ;
    }
}
−−−−−−−−−−

(2)
WEB-INF/classes/examples/jsf/dicon/allvalidator.dicon に
 <component name="testValidator" class="examples.jsf.validator.TestValidator" />
を追加

(3)
validator/validator.html で
m:binding="#{ageValidator} を m:binding="#{testValidator}" に変更

(4)
デプロイして実行。
Age:の入力欄にaaaと入力し、submitボタンを押すと MyFaces版では
特に何もおきません(正常)が、同様のことを s2-jsf-1.1.0-beta-1 で
行なうと以下のようなNullPointerExceptionが発生してしまいます。
−−−−−−−−−−
java.lang.NullPointerException
	org.seasar.jsf.util.UIComponentUtil.callValidators(UIComponentUtil.java:66)
	org.seasar.jsf.component.html.S2HtmlInputText.validate(S2HtmlInputText.java:73)
	javax.faces.component.UIInput.executeValidate(UIInput.java:406)
	javax.faces.component.UIInput.processValidators(UIInput.java:187)
	javax.faces.component.ComponentUtils_.processAppropriatePhaseAction(ComponentUtils_.java:49)
	javax.faces.component.UIForm.processAppropriateAction(UIForm.java:84)
	javax.faces.component.UIForm.processValidators(UIForm.java:72)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:429)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:429)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:429)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:429)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:429)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:429)
	javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:103)
	org.seasar.jsf.component.S2UIViewRoot.processValidators(S2UIViewRoot.java:68)
	org.seasar.jsf.lifecycle.LifecycleImpl.processValidations(LifecycleImpl.java:149)
	org.seasar.jsf.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:89)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:76)
	org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62)
	org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:63)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
−−−−−−−−−−




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