Java Mailing List Archive

http://www.gg3721.com/

Home » Struts Users Mailing List »

NullPointerException with Validation Messages

Mark

2008-09-08

Replies: Find Java Web Hosting

Author LoginPost Reply
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
com.opensymphony.xwork2.validator.validators.RequiredStringValidator@(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
com.opensymphony.xwork2.validator.validators.RequiredStringValidator@(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: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)

©2008 gg3721.com - Jax Systems, LLC, U.S.A.