You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by lucas owen <sr...@gmail.com> on 2013/03/26 18:28:31 UTC

struts2 (2.2.1) adds field error and doesn't return input!!

I have this wierd problem when validating an action, I add field errors in
the validate method but Struts2 doesn´t return input and continues
execution. I show you my configuration (only relevant points):

.jsp
------

<script type="text/javascript">
function savePerson(){
document.getElementById("formP").action="PersonSave.action";
document.getElementById("formP").submit();
return false;
}
</script>

<s:form id="formP" validate="false" Acceptcharset="UTF-8">
<s:textfield key="surname" required="true"/>
<s:textfield key="name" required="true"/>
<s:submit value="Save" onclick="javascript:return savePerson();return
false;"/>
</s:form>

struts.xml
---------------

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ui.theme" value="appInterna" />
    <constant name="struts.ui.templateDir" value="template" />
    <constant name="struts.custom.i18n.resources" value="messages" />

    <package name="project" extends="tiles-default, json-default ,
struts-default">
        <result-types>
            <result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" default="true" />
            <result-type name="jasper"
class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
        </result-types>
<action name="PersonSave" method="save" class="PersonAction">
             <result name="input" type="dispatcher">
              <param
name="location">/WEB-INF/pages/person/person.jsp</param>
             </result>
             <result name="success" type="redirectAction">
                <param name="actionName">personSuccess</param>
                <param name="person.id">${person.id}</param>
                <param name="selectedId">${selectedId}</param>
             </result>
        </action>
</package>

</struts>

Action
---------

public class PersonAction extends ActionSupport {

Person person;
PersonService personService;
 public void validateSave() {
 if(person.getSurname().equals("")){
addFieldError("person.surname", getText("mandatory",new
String[]{"Surname"}));
}
if(person.getName().equals("")){
addFieldError("person.name", getText("mandatory",new String[]{"Name"}));
}
}
 public String save() {
try {
personService.save(person);
addActionMessage(getText("response.save_ok"));
} catch (Exception e) {
ErrorHandler.add(this, e, log);
}
return "success";
}
}

if in the validate i add action errors instead of field errors everything
works correctly...

Any help would be so much appreciated
THANKS IN ADVANCE!!!

Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Lukasz Lenart <lu...@apache.org>.
2013/3/27 lucas owen <sr...@gmail.com>:
> NEVER MIND
>
> it turns out that a co-worker had touched validate() method:
>
>         public void validate(){
>  Map<String, List<String>> fieldError = new HashedMap();
>  setFieldErrors(fieldError);
> }
>
> what i didn´t know is that (calling "save" action) after validateSave,
> Struts 2 continues executing validate, erasing, in this case, field errors.

Check the docs [1], param alwaysInvokeValidate, you can change that behaviour

[1] http://struts.apache.org/development/2.x/docs/validation-interceptor.html


Regards
-- 
Łukasz
+ 48 606 323 122 http://www.lenart.org.pl/

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


Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by lucas owen <sr...@gmail.com>.
NEVER MIND

it turns out that a co-worker had touched validate() method:

        public void validate(){
 Map<String, List<String>> fieldError = new HashedMap();
 setFieldErrors(fieldError);
}

what i didn´t know is that (calling "save" action) after validateSave,
Struts 2 continues executing validate, erasing, in this case, field errors.

I'm so grateful with your support, keep working hard
thanks!!


2013/3/26 Alejandro <ap...@gmail.com>

> he used onclick, cancel the click event
>
>
>
> 2013/3/26 Paul Benedict <pb...@apache.org>
>
> > Correct. Return true to submit; false to cancel the event.
> >
> > On Tue, Mar 26, 2013 at 1:10 PM, Maurizio Cucchiara
> > <mc...@apache.org>wrote:
> >
> > > I could be wrong, but if you don't return true on submit event, the
> > > form will never get submitted.
> > >
> > > Twitter     :http://www.twitter.com/m_cucchiara
> > > G+          :https://plus.google.com/107903711540963855921
> > > Linkedin    :http://www.linkedin.com/in/mauriziocucchiara
> > > VisualizeMe:
> http://vizualize.me/maurizio.cucchiara?r=maurizio.cucchiara
> > >
> > > Maurizio Cucchiara
> > >
> > >
> > > On 26 March 2013 18:44, Dave Newton <da...@gmail.com> wrote:
> > > > On Tue, Mar 26, 2013 at 1:42 PM, Alejandro <ap...@gmail.com>
> wrote:
> > > >
> > > >>   you don't put validate to true in the form
> > > >>
> > > >
> > > > That's only for client-side validation.
> > > >
> > > > Dave
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > > For additional commands, e-mail: user-help@struts.apache.org
> > >
> > >
> >
>

Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Alejandro <ap...@gmail.com>.
he used onclick, cancel the click event



2013/3/26 Paul Benedict <pb...@apache.org>

> Correct. Return true to submit; false to cancel the event.
>
> On Tue, Mar 26, 2013 at 1:10 PM, Maurizio Cucchiara
> <mc...@apache.org>wrote:
>
> > I could be wrong, but if you don't return true on submit event, the
> > form will never get submitted.
> >
> > Twitter     :http://www.twitter.com/m_cucchiara
> > G+          :https://plus.google.com/107903711540963855921
> > Linkedin    :http://www.linkedin.com/in/mauriziocucchiara
> > VisualizeMe: http://vizualize.me/maurizio.cucchiara?r=maurizio.cucchiara
> >
> > Maurizio Cucchiara
> >
> >
> > On 26 March 2013 18:44, Dave Newton <da...@gmail.com> wrote:
> > > On Tue, Mar 26, 2013 at 1:42 PM, Alejandro <ap...@gmail.com> wrote:
> > >
> > >>   you don't put validate to true in the form
> > >>
> > >
> > > That's only for client-side validation.
> > >
> > > Dave
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> >
> >
>

Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Paul Benedict <pb...@apache.org>.
Correct. Return true to submit; false to cancel the event.

On Tue, Mar 26, 2013 at 1:10 PM, Maurizio Cucchiara
<mc...@apache.org>wrote:

> I could be wrong, but if you don't return true on submit event, the
> form will never get submitted.
>
> Twitter     :http://www.twitter.com/m_cucchiara
> G+          :https://plus.google.com/107903711540963855921
> Linkedin    :http://www.linkedin.com/in/mauriziocucchiara
> VisualizeMe: http://vizualize.me/maurizio.cucchiara?r=maurizio.cucchiara
>
> Maurizio Cucchiara
>
>
> On 26 March 2013 18:44, Dave Newton <da...@gmail.com> wrote:
> > On Tue, Mar 26, 2013 at 1:42 PM, Alejandro <ap...@gmail.com> wrote:
> >
> >>   you don't put validate to true in the form
> >>
> >
> > That's only for client-side validation.
> >
> > Dave
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>

Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Maurizio Cucchiara <mc...@apache.org>.
I could be wrong, but if you don't return true on submit event, the
form will never get submitted.

Twitter     :http://www.twitter.com/m_cucchiara
G+          :https://plus.google.com/107903711540963855921
Linkedin    :http://www.linkedin.com/in/mauriziocucchiara
VisualizeMe: http://vizualize.me/maurizio.cucchiara?r=maurizio.cucchiara

Maurizio Cucchiara


On 26 March 2013 18:44, Dave Newton <da...@gmail.com> wrote:
> On Tue, Mar 26, 2013 at 1:42 PM, Alejandro <ap...@gmail.com> wrote:
>
>>   you don't put validate to true in the form
>>
>
> That's only for client-side validation.
>
> Dave

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


Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Dave Newton <da...@gmail.com>.
On Tue, Mar 26, 2013 at 1:42 PM, Alejandro <ap...@gmail.com> wrote:

>   you don't put validate to true in the form
>

That's only for client-side validation.

Dave

Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Alejandro <ap...@gmail.com>.
Hi Again,
  you don't put validate to true in the form

 If there are errors why does the action return success ??


2013/3/26 Alejandro <ap...@gmail.com>

> <s:submit value="Save" onclick="javascript:return savePerson();return
> false;"/>
>
> The second return never will return false because the first return false
> always.
>
>
> 2013/3/26 lucas owen <sr...@gmail.com>
>
>> I have this wierd problem when validating an action, I add field errors in
>> the validate method but Struts2 doesn´t return input and continues
>> execution. I show you my configuration (only relevant points):
>>
>> .jsp
>> ------
>>
>> <script type="text/javascript">
>> function savePerson(){
>> document.getElementById("formP").action="PersonSave.action";
>> document.getElementById("formP").submit();
>> return false;
>> }
>> </script>
>>
>> <s:form id="formP" validate="false" Acceptcharset="UTF-8">
>> <s:textfield key="surname" required="true"/>
>> <s:textfield key="name" required="true"/>
>> <s:submit value="Save" onclick="javascript:return savePerson();return
>> false;"/>
>> </s:form>
>>
>> struts.xml
>> ---------------
>>
>> <!DOCTYPE struts PUBLIC
>>     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
>>     "http://struts.apache.org/dtds/struts-2.1.dtd">
>> <struts>
>>     <constant name="struts.objectFactory" value="spring" />
>>     <constant name="struts.devMode" value="true" />
>>     <constant name="struts.ui.theme" value="appInterna" />
>>     <constant name="struts.ui.templateDir" value="template" />
>>     <constant name="struts.custom.i18n.resources" value="messages" />
>>
>>     <package name="project" extends="tiles-default, json-default ,
>> struts-default">
>>         <result-types>
>>             <result-type name="tiles"
>> class="org.apache.struts2.views.tiles.TilesResult" default="true" />
>>             <result-type name="jasper"
>> class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
>>         </result-types>
>> <action name="PersonSave" method="save" class="PersonAction">
>>              <result name="input" type="dispatcher">
>>               <param
>> name="location">/WEB-INF/pages/person/person.jsp</param>
>>              </result>
>>              <result name="success" type="redirectAction">
>>                 <param name="actionName">personSuccess</param>
>>                 <param name="person.id">${person.id}</param>
>>                 <param name="selectedId">${selectedId}</param>
>>              </result>
>>         </action>
>> </package>
>>
>> </struts>
>>
>> Action
>> ---------
>>
>> public class PersonAction extends ActionSupport {
>>
>> Person person;
>> PersonService personService;
>>  public void validateSave() {
>>  if(person.getSurname().equals("")){
>> addFieldError("person.surname", getText("mandatory",new
>> String[]{"Surname"}));
>> }
>> if(person.getName().equals("")){
>> addFieldError("person.name", getText("mandatory",new String[]{"Name"}));
>> }
>> }
>>  public String save() {
>> try {
>> personService.save(person);
>> addActionMessage(getText("response.save_ok"));
>> } catch (Exception e) {
>> ErrorHandler.add(this, e, log);
>> }
>> return "success";
>> }
>> }
>>
>> if in the validate i add action errors instead of field errors everything
>> works correctly...
>>
>> Any help would be so much appreciated
>> THANKS IN ADVANCE!!!
>>
>
>

Re: struts2 (2.2.1) adds field error and doesn't return input!!

Posted by Alejandro <ap...@gmail.com>.
<s:submit value="Save" onclick="javascript:return savePerson();return
false;"/>

The second return never will return false because the first return false
always.


2013/3/26 lucas owen <sr...@gmail.com>

> I have this wierd problem when validating an action, I add field errors in
> the validate method but Struts2 doesn´t return input and continues
> execution. I show you my configuration (only relevant points):
>
> .jsp
> ------
>
> <script type="text/javascript">
> function savePerson(){
> document.getElementById("formP").action="PersonSave.action";
> document.getElementById("formP").submit();
> return false;
> }
> </script>
>
> <s:form id="formP" validate="false" Acceptcharset="UTF-8">
> <s:textfield key="surname" required="true"/>
> <s:textfield key="name" required="true"/>
> <s:submit value="Save" onclick="javascript:return savePerson();return
> false;"/>
> </s:form>
>
> struts.xml
> ---------------
>
> <!DOCTYPE struts PUBLIC
>     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
>     "http://struts.apache.org/dtds/struts-2.1.dtd">
> <struts>
>     <constant name="struts.objectFactory" value="spring" />
>     <constant name="struts.devMode" value="true" />
>     <constant name="struts.ui.theme" value="appInterna" />
>     <constant name="struts.ui.templateDir" value="template" />
>     <constant name="struts.custom.i18n.resources" value="messages" />
>
>     <package name="project" extends="tiles-default, json-default ,
> struts-default">
>         <result-types>
>             <result-type name="tiles"
> class="org.apache.struts2.views.tiles.TilesResult" default="true" />
>             <result-type name="jasper"
> class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
>         </result-types>
> <action name="PersonSave" method="save" class="PersonAction">
>              <result name="input" type="dispatcher">
>               <param
> name="location">/WEB-INF/pages/person/person.jsp</param>
>              </result>
>              <result name="success" type="redirectAction">
>                 <param name="actionName">personSuccess</param>
>                 <param name="person.id">${person.id}</param>
>                 <param name="selectedId">${selectedId}</param>
>              </result>
>         </action>
> </package>
>
> </struts>
>
> Action
> ---------
>
> public class PersonAction extends ActionSupport {
>
> Person person;
> PersonService personService;
>  public void validateSave() {
>  if(person.getSurname().equals("")){
> addFieldError("person.surname", getText("mandatory",new
> String[]{"Surname"}));
> }
> if(person.getName().equals("")){
> addFieldError("person.name", getText("mandatory",new String[]{"Name"}));
> }
> }
>  public String save() {
> try {
> personService.save(person);
> addActionMessage(getText("response.save_ok"));
> } catch (Exception e) {
> ErrorHandler.add(this, e, log);
> }
> return "success";
> }
> }
>
> if in the validate i add action errors instead of field errors everything
> works correctly...
>
> Any help would be so much appreciated
> THANKS IN ADVANCE!!!
>