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!!!
>