Don't know if this solves your problem, but maybe it helps to use the
params-prepare-params trick, calling params interceptor twice, so you
have your params ready before prepare().
You have an already configured stack, the paramsPrepareParamsStack
From struts-default.xml:
<!-- An example of the paramsPrepareParams trick. This stack
is exactly the same as the defaultStack, except that it
includes one extra interceptor before the prepare
interceptor:
the params interceptor.
This is useful for when you wish to apply parameters
directly
to an object that you wish to load externally (such as
a DAO
or database or service layer), but can't load that object
until at least the ID parameter has been loaded. By
loading
the parameters twice, you can retrieve the object in the
prepare() method, allowing the second params
interceptor to
apply the values on the object. -->
<interceptor-stack name="paramsPrepareParamsStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="params">
<param
name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param
name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param
name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param
name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
Hi,
I have read the documentation "How do we repopulate controls when validation
fails" [1]. I tried the action tag solution. However, when there is a
validation error, the execute method of the action in<s:action> is not
called.
I don't choose the Preparable solution because the parameter required is not
ready in the Prepare stage. (For the first time of visit, the parameter is
set to default.) And I don't want to call the preparation twice in both
execute and prepare. So what is the best way to repopulate controls for
normal case and revisit after validation error? Should I abandon to validate
the input in validate method?
Thanks.
Franz
[1]
http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org