stanlick wrote:
Also, what is the naming convention for validation xml files using the Code
Behind/REST plug-in?

I've tried several combinations of naming, but none seem to work.


The short answer is: you can't. It doesn't work. Fortunately annotation validation works correctly in 2.1, so the approach I've used is:
 - the action carries validation annotations on the applicable methods;
 - the model's use XML validation
as they can be used together and it's well suited to ModelDriven.

The problem is that the DefaultValidatorFileParser in Xwork that reads the XML file has no way to specify which method it should be applied to. It applies to the entire class. With wildcards in 2.0 you could get around this because the action "alias" included the method name.

It's the same reason using "method='update'" spefied in struts.xml never worked properly with XML validation. The parameter was ignored by the XML validator. This had always frustrated me.

Fortunately somebody fixed the annotation interceptor so it can distinguish between the methods being executed. Unfortunately that fix (validateAnnotatedMethodOnly) is not enabled by the rest plugin by default. Further compounding the problem is that rest plugin has disabled validation for the edit, editNew and other relevant methods. (I'm not sure why...there must have been a reason for that).

What I've done is replace the rest default stack with one that includes the validation interceptor with better configuration:

<interceptor-ref name="validation">
  <param name="excludeMethods">input,back,cancel,browse,index</param>
  <param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="restWorkflow">
  <param name="excludeMethods">input,back,cancel,browse,index</param>
</interceptor-ref>


I've been tempted to delve in a fix this but so far I've stayed out of xwork. The rest plugin does the right thing setting up the ActionInvocation with the action name and method name; the XML validation config reader just needs to use the method name to select the file (eg. to load OrdersControler-<action>-<method>-validation.xml if it exists). But I feel it already searches for far too many combinations, so I've been reluctant to touch it.

stanlinck also wrote:

Would you share the interceptor stack to fold paramsPrepareParamsStack
capabilities into the restDefaultStack?


I haven't experimented with this much with the rest plugin as I try to avoid it . It's reasonable logical...

The actionMappingParams interceptor is the one responsible for setting the id, so it needs to appear before the prepare interceptor. If you need other params, before prepare, you also need params before prepare.
The actionMappingParams and params are then required after prepare again.

ie. set the id, load the object, set the id and params

It's different because the ActionMapper obtained the id from URI.
If you use other variables in the namespace you also need this interceptor before prepare.

Hope that helps,
Jeromy Evans




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to