You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (Jira)" <ji...@apache.org> on 2023/06/28 07:00:00 UTC
[jira] [Updated] (WW-3532) client validation isn't generated when using a VisitorFieldValidator annotation
[ 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.4.0
(was: 6.2.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.4.0
>
> 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)