[ 
https://issues.apache.org/jira/browse/WW-3532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3532:
------------------------------
    Fix Version/s: 6.7.1
                       (was: 6.7.0)

> client validation isn't generated when using a VisitorFieldValidator 
> annotation
> -------------------------------------------------------------------------------
>
>                 Key: WW-3532
>                 URL: https://issues.apache.org/jira/browse/WW-3532
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.2.1
>         Environment: jboss 5, struts2-core-2.2.1.jar
>            Reporter: David G
>            Priority: Minor
>             Fix For: 6.7.1
>
>         Attachments: AnnotationValidationConfigurationBuilderTest.java
>
>
> When using a VisitorFieldValidator in an action, the generated Javascript 
> doesn't validate fields on the referenced POJO, i.e. the example I have below 
> would only generate:
> <script type="text/javascript">
>     function validateForm_createAccount() {
>         form = document.getElementById("createAccount");
>         clearErrorMessages(form);
>         clearErrorLabels(form);
>         var errors = false;
>         var continueValidation = true;
>         return !errors;
>     }
> </script>
> I have two current workarounds, but they're a bit of a pain:
> 1) Using XML validation instead of annotations.
> 2) Not to use the VisitorFieldValidator model, and instead have the form 
> fields referenced directly in the Action class.
> Here's the code I've been using (a trimmed down version of it anyway ;-) )
> AccountManagementAction.java:
> public class AccountManagementAction extends ActionSupport
> {
>       private Account account;
>       public Account getAccount()
>       {
>               return account;
>       }
>       @VisitorFieldValidator
>       public void setAccount(Account account)
>       {
>               this.account = account;
>       }
>         ...
> }
> Account.java:
> public class Account
> {
>       private String username;
>       public String getUsername()
>       {
>               return username;
>       }
>       @Validations(
>               requiredStrings = @RequiredStringValidator(trim = true, message 
> = "Required"),
>               stringLengthFields = @StringLengthFieldValidator(
>                       minLength = "2", maxLength = "10", trim = true,
>                       message = "This must be between ${minLength} and 
> ${maxLength} letters"),
>               regexFields = @RegexFieldValidator(expression = 
> "^[0-9a-zA-Z]*$",
>                       message = "Only plain letters and numbers are allowed")
>         )
>       public void setUsername(String username)
>       {
>               this.username = username;
>       }
> }
> registration.jsp:
> <%@page contentType="text/html" pageEncoding="UTF-8"%>
> <%@ taglib prefix="s" uri="/struts-tags" %>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>    "http://www.w3.org/TR/html4/loose.dtd";>
> <html>
>       <head>
>               <s:head/>
>       </head>
>       <body>
>               <s:form validate="true" action="createAccount">
>                       <s:textfield name="account.username" label="Username" />
>                       <s:submit/>
>               </s:form>
>       </body>
> </html>



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to