Hi all:

I'm using Struts 2 validation and I'm getting a NullPointerException when the page is being displayed (before it is even being submitted or validated). I did some searches and found this Jira: https:// issues.apache.org/struts/browse/WW-2150. It states that it has been fixed in version 2.1.3. I've updated to the latest SNAPSHOT of 2.1.3 and I'm still getting the error.

The problem seems to be with the <message key...> validation. If I change it to <message> it works.

Can someone confirm there is not a problem with my setup?

Thanks in advance,
Mark

My directory structure is as following:

com.myapp.struts
|
- LoginAction.java
- LoginAction-validation.xml
- package.properties

LoginAction-validation.xml:
=====================
<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE validators PUBLIC
                "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
                "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd ">

<validators>
        <field name="userName">
                <field-validator type="requiredstring">
                        <message key="requiredString">Boo</message>
                </field-validator>
        </field>
        <field name="password">
                <field-validator type="requiredstring">
                        <message>Please enter a Password</message>
                </field-validator>
        </field>
</validators>

package.properties
================
<other lines have been snipped>
requiredString=${getText(fieldName)} is required.

login.jsp
================
<other lines have been snipped>
           <div id="login">
                <h2 align="center">Welcome!    </h2>
                <center>
                <!--<s:actionerror />-->
                <s:if test="hasActionErrors()">
                        <span class="errorMessage">
                                <s:iterator value="actionErrors">
                                        <s:property escape="false"/>
                                </s:iterator>
                                </span>
                                </s:if>
                <s:form action="login" method="POST" validate="true">
<s:textfield label="Name" name="userName" maxlength="8" size="8px" required="true"/> <s:password label="Password" name="password" maxlength="8" size="8px" required="true"/>
                        <s:submit align="center" value="Login"/>
               </s:form></center>
                    <!-- end #mainContent -->
            </div>

struts.xml
==================
<struts>
        <include file="struts-default.xml" />
        <package name="Hotel" extends="struts-default">
                
                <interceptors>
<interceptor name="mySecurity" class="com.myapp.struts.SecurityInterceptor"></interceptor>
                    <interceptor-stack name="myStack">
                                <interceptor-ref name="defaultStack"/>
                                <interceptor-ref name="mySecurity">
                                        <param name="requiredRoles">user</param>
                                </interceptor-ref>
                        </interceptor-stack>
                </interceptors>
                <default-interceptor-ref name="myStack"/>

        <global-results>
                <result name="noaccess">/noaccess.jsp</result>
        </global-results>

        <action name="login" class="com.myapp.struts.LoginAction">
            <result name="input">login.jsp</result>
            <result>WEB-INF/mainmenu.jsp</result>
        </action>
<other lines snipped>

Stack Trace:
==================
008-09-09 11:05:07,521 ERROR [org.apache.struts2.components.UIBean] - <error when rendering> Method public java.lang.String com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage (java.lang.Object) threw an exception when invoked on [EMAIL PROTECTED] 101
The problematic instruction:
----------
==> ${validator.getMessage(action)?js_string} [on line 51, column 26 in template/xhtml/form-close-validate.ftl] in include "/${parameters.templateDir}/xhtml/form-close- validate.ftl" [on line 25, column 1 in template/xhtml/form-close.ftl]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: Method public java.lang.String com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage (java.lang.Object) threw an exception when invoked on [EMAIL PROTECTED] 101 at freemarker.ext.beans.SimpleMethodModel.exec (SimpleMethodModel.java:130)
        at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)
        at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
        at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.StringBuiltins$StringBuiltIn._getAsTemplateModel (StringBuiltins.java:71)
        at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
        at freemarker.core.Expression.getStringValue(Expression.java:93)
        at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.MixedContent.accept(MixedContent.java:92)
        at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java: 167)
        at freemarker.core.Environment.visit(Environment.java:415)
        at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
        at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java: 167)
        at freemarker.core.Environment.visit(Environment.java:415)
        at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.MixedContent.accept(MixedContent.java:92)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.MixedContent.accept(MixedContent.java:92)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.Environment.include(Environment.java:1477)
        at freemarker.core.Include.accept(Include.java:169)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.MixedContent.accept(MixedContent.java:92)
        at freemarker.core.Environment.visit(Environment.java:208)
        at freemarker.core.Environment.process(Environment.java:188)
        at freemarker.template.Template.process(Template.java:237)
at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTe mplate(FreemarkerTemplateEngine.java:185)
        at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:558)
        at org.apache.struts2.components.UIBean.end(UIBean.java:512)
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag (ComponentTagSupport.java:42) at org.apache.jsp.login_jsp._jspx_meth_s_005fform_005f0 (login_jsp.java:344)
        at org.apache.jsp.login_jsp._jspService(login_jsp.java:139)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:337)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:302) at org.apache.jasper.runtime.PageContextImpl.doForward (PageContextImpl.java:694) at org.apache.jasper.runtime.PageContextImpl.forward (PageContextImpl.java:665)
        at org.apache.jsp.index_jsp._jspService(index_jsp.java:54)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:337)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter (FilterDispatcher.java:389) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol $Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run (JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:613)
Caused by: java.lang.NullPointerException
at com.opensymphony.xwork2.validator.DelegatingValidatorContext $LoggingValidationAware.<init>(DelegatingValidatorContext.java:236) at com.opensymphony.xwork2.validator.DelegatingValidatorContext.makeValidat ionAware(DelegatingValidatorContext.java:195) at com.opensymphony.xwork2.validator.DelegatingValidatorContext.<init> (DelegatingValidatorContext.java:46) at com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage (ValidatorSupport.java:73)
        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 freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java: 835) at freemarker.ext.beans.SimpleMethodModel.exec (SimpleMethodModel.java:106)
        ... 73 more

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to