You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Norris Shelton <no...@yahoo.com> on 2009/02/19 21:31:11 UTC

Struts 2.1 validation with annotations

I am looking to set-up validation, but I am getting errors.  I added the following to my struts.xml:

    <package name="conap" extends="struts-default">
        <interceptors>
            <interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/>
            <interceptor-stack name="validationStack">
                <interceptor-ref name="defaultStack"/>
                <interceptor-ref name="validation"/>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="defaultStack"/>
    </package>

The class that I want to validate is defined as follows:
@ParentPackage("conap")
public class SubmitAction extends ActionSupport implements ModelDriven<Application> {
...
    @VisitorFieldValidator
    public Application getModel() {
        return application;
    }
...
    @Action(
        results = {
            @Result(name = "success", location = "/WEB-INF/content/soldier/login-success.jsp"),
            @Result(name = "error", location = "/WEB-INF/content/soldier/login-error.jsp")},
        interceptorRefs = {@InterceptorRef("validationStack")}
    )
    public String execute() throws Exception {
    ...
    }
}

The class that I want to validate is defined as follows:
public class Application {
...
    @RequiredFieldValidator(type = ValidatorType.FIELD, message = "Major is required")
    public void setMajorCd(String majorCd) {
        this.majorCd = majorCd;
    }
...
    @RequiredFieldValidator(type = ValidatorType.FIELD, message = "Expected Entry Date is required")
    public void setExpectedEntryDate(String expectedEntryDate) {
        this.expectedEntryDate = expectedEntryDate;
    }
}



When I submit to the action, I get an exception:
Struts Problem Report
Struts Problem Report
Struts has detected an unhandled exception: 
Messages:  
File: com/opensymphony/xwork2/util/TextParseUtil.java 
Line number: 155 

________________________________
 
Stacktraces
java.lang.NullPointerException 
    com.opensymphony.xwork2.util.TextParseUtil.translateVariables(TextParseUtil.java:155)
    com.opensymphony.xwork2.util.TextParseUtil.translateVariables(TextParseUtil.java:116)
    com.opensymphony.xwork2.util.TextParseUtil.translateVariables(TextParseUtil.java:38)
    com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage(ValidatorSupport.java:99)
    com.opensymphony.xwork2.validator.validators.VisitorFieldValidator.validateObject(VisitorFieldValidator.java:156)
    com.opensymphony.xwork2.validator.validators.VisitorFieldValidator.validate(VisitorFieldValidator.java:130)
    com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:183)
    com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:94)
    com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:89)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:208)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:247)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
    mil.army.usaac.conap.LogBackFilter.doFilter(LogBackFilter.java:43)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
    org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
    com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
    org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
    com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
    com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
    com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
    com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
    com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
    com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
    com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
    com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
    com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
    

________________________________
 
You are seeing this page because development mode is enabled. Development 
mode, or devMode, enables extra debugging behaviors and reports to assist 
developers. To disable this mode, set: 
  struts.devMode=false
in your WEB-INF/classes/struts.properties file. 



Norris Shelton
Software Engineer
Sun Certified Java 1.1 Programmer
Shelton Consulting, LLC
ICQ# 26487421
AIM NorrisEShelton
YIM norrisshelton



      

Re: Struts 2.1 validation with annotations

Posted by Musachy Barroso <mu...@gmail.com>.
Please open a jira ticket with as much information as possible.

thanks
musachy

On Fri, Feb 20, 2009 at 12:33 PM, billgloff <bg...@citytechinc.com> wrote:
>
> I have the same exact problem now after upgrading to 2.1.
>
> I have the following model-driven validation defined (which works fine in
> 2.0):
>
> @VisitorFieldValidator(message="")
>
> Now I get the same exception as above when validation fails.
>
> If I add in any kind of text into the message param, it works but looks ugly
> since it spits out that message along with the field message. So I get
> something like this underneath my textfield
>
> "My default messageLast Name cannot be blank or contain invalid characters"
>
> Any ideas about what is going on here?
>
> Thanks.
>
>
>
> sheltonn wrote:
>>
>> It is null.  Can you point me in the direction of what I am missing?
>>
>>
>> Norris Shelton
>> Software Engineer
>> Sun Certified Java 1.1 Programmer
>> Shelton Consulting, LLC
>> ICQ# 26487421
>> AIM NorrisEShelton
>> YIM norrisshelton
>>
>>
>>
>>
>> ________________________________
>> From: Musachy Barroso <mu...@gmail.com>
>> To: Struts Users Mailing List <us...@struts.apache.org>
>> Sent: Thursday, February 19, 2009 3:45:35 PM
>> Subject: Re: Struts 2.1 validation with annotations
>>
>> It seems like the default message for that validator is null. Try
>> adding a break point to ValidatorSupport:getMessage and see if the
>> defaultMessage is null.
>>
>> musachy
>>
>> On Thu, Feb 19, 2009 at 3:31 PM, Norris Shelton <no...@yahoo.com>
>> wrote:
>>> validateObject
>>
>>
>>
>> --
>> "Hey you! Would you help me to carry the stone?" Pink Floyd
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Struts-2.1-validation-with-annotations-tp22109064p22124783.html
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts 2.1 validation with annotations

Posted by billgloff <bg...@citytechinc.com>.
I have the same exact problem now after upgrading to 2.1.

I have the following model-driven validation defined (which works fine in
2.0):

@VisitorFieldValidator(message="")

Now I get the same exception as above when validation fails.

If I add in any kind of text into the message param, it works but looks ugly
since it spits out that message along with the field message. So I get
something like this underneath my textfield

"My default messageLast Name cannot be blank or contain invalid characters"

Any ideas about what is going on here?

Thanks.



sheltonn wrote:
> 
> It is null.  Can you point me in the direction of what I am missing?
> 
>  
> Norris Shelton
> Software Engineer
> Sun Certified Java 1.1 Programmer
> Shelton Consulting, LLC
> ICQ# 26487421
> AIM NorrisEShelton
> YIM norrisshelton
> 
> 
> 
> 
> ________________________________
> From: Musachy Barroso <mu...@gmail.com>
> To: Struts Users Mailing List <us...@struts.apache.org>
> Sent: Thursday, February 19, 2009 3:45:35 PM
> Subject: Re: Struts 2.1 validation with annotations
> 
> It seems like the default message for that validator is null. Try
> adding a break point to ValidatorSupport:getMessage and see if the
> defaultMessage is null.
> 
> musachy
> 
> On Thu, Feb 19, 2009 at 3:31 PM, Norris Shelton <no...@yahoo.com>
> wrote:
>> validateObject
> 
> 
> 
> -- 
> "Hey you! Would you help me to carry the stone?" Pink Floyd
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 
>       
> 

-- 
View this message in context: http://www.nabble.com/Struts-2.1-validation-with-annotations-tp22109064p22124783.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts 2.1 validation with annotations

Posted by Norris Shelton <no...@yahoo.com>.
It is null.  Can you point me in the direction of what I am missing?

 
Norris Shelton
Software Engineer
Sun Certified Java 1.1 Programmer
Shelton Consulting, LLC
ICQ# 26487421
AIM NorrisEShelton
YIM norrisshelton




________________________________
From: Musachy Barroso <mu...@gmail.com>
To: Struts Users Mailing List <us...@struts.apache.org>
Sent: Thursday, February 19, 2009 3:45:35 PM
Subject: Re: Struts 2.1 validation with annotations

It seems like the default message for that validator is null. Try
adding a break point to ValidatorSupport:getMessage and see if the
defaultMessage is null.

musachy

On Thu, Feb 19, 2009 at 3:31 PM, Norris Shelton <no...@yahoo.com> wrote:
> validateObject



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


      

Re: Struts 2.1 validation with annotations

Posted by Musachy Barroso <mu...@gmail.com>.
It seems like the default message for that validator is null. Try
adding a break point to ValidatorSupport:getMessage and see if the
defaultMessage is null.

musachy

On Thu, Feb 19, 2009 at 3:31 PM, Norris Shelton <no...@yahoo.com> wrote:
> validateObject



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org