Wait until somebody else confirms it, as I'm not 100% sure :)

musachy

On 2/12/07, Laurie Harper <[EMAIL PROTECTED]> wrote:

Hmm, if that's true it'll mean I'm forced to split my user admin action
into multiple actions (and same for every other master-detail view I
have) :-( Does the same limitation apply when using XML-based validation?

L.

Musachy Barroso wrote:
> I think when you annotate a class with @Validations, "input" is the only
> method that will be called without invoking the validation first.
>
> musachy
>
> Laurie Harper wrote:
>> I'm trying to get validation working (using annotations) in a Struts2
>> project and I can't seem to get it to quite cooperate :-) I'm using
>> the Zero Configuration and Code Behind plugins, so this may be a
>> result of some unintended interaction between those and the validation
>> framework.
>>
>> The use case is a master/detail view, where both are handled by the
>> same action. The (default) master view (/admin/users.jsp) lists all
>> the users and has an Add User link pointing to
>> /admin/users!add.action. The problem is, as soon as I add any
>> validation rules, the action is never executed and Struts loads the
>> default /admin/users.jsp view, instead of /admin/users-edit.jsp.
>> Without validation rules specified (including if I have an empty
>> @Validations annotation), everything works as it should.
>>
>> I've tried using an @SkipValidation annotation as mentioned on the
>> Validation page [1] in the documentation, but that annotation doesn't
>> seem to exist anywhere in Struts2 or XWork...!
>>
>> Now, the magic: if I add an 'input' method to the action with 'return
>> "edit";', and hit /admin/users!input.action (instead of ...!add...),
>> it works fine again. It appears that the token 'input' is somehow
magic?
>>
>> A stripped down copy of my action follows [2]. How do I get validation
>> to *only* be applied when calling the save() method?
>>
>> [1] http://struts.apache.org/2.x/docs/validation.html
>>
>> [2] action code:
>>
>> package ...admin;
>> @Results(
>>     @Result(value = "users", type = ServletActionRedirectResult.class)
>> // XXX why doesn't this work?
>> )
>> @Validation
>> public class UsersAction extends ActionSupport {
>>     public String add() {
>>         System.out.println("ADD");
>>         user = userService.createUser();
>>         return "edit";
>>     }
>>
>>     public String execute() {
>>         System.out.println("EXECUTE");
>>         return "edit";
>>     }
>>
>>     public String input() {
>>         System.out.println("INPUT");
>>         return "edit";
>>     }
>>
>>     @Validations(
>>         requiredStrings = {
>>             @RequiredStringValidator(
>>                     fieldName = "user.login",
>>                     key = "user.login.required",
>>                     message = "user.login.required")},
>>         ...
>>     )
>>     public String save() {
>>         System.out.println("SAVE");
>>         ...
>>
>>         return SUCCESS;
>>     }
>> }
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>


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




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

Reply via email to