[ 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)