[
https://issues.apache.org/jira/browse/TAP5-1718?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thiago H. de Paula Figueiredo updated TAP5-1718:
------------------------------------------------
Labels: binding jsr-303 month-of-tapestry parameter tapestry-beanvalidator
validation validationdecorator (was: binding jsr-303 parameter
tapestry-beanvalidator validation validationdecorator)
> Tapestry-beanvalidator isn't validating nested DTO objects / Doesn't mark the
> invalid fields in the UI
> ------------------------------------------------------------------------------------------------------
>
> Key: TAP5-1718
> URL: https://issues.apache.org/jira/browse/TAP5-1718
> Project: Tapestry 5
> Issue Type: Improvement
> Components: tapestry-beanvalidator
> Affects Versions: 5.2
> Reporter: Matthias Melitzer
> Assignee: Thiago H. de Paula Figueiredo
> Labels: binding, jsr-303, month-of-tapestry, parameter,
> tapestry-beanvalidator, validation, validationdecorator
> Fix For: 5.4
>
>
> Tapestry-beanvalidator isn't validating nested objects correctly, the problem
> is that component parameters i.e. the TextField#value is only bound to the
> attribute itself but doesn't contain the full objectpath, so using a DTO like:
> class TestDTO {
> @NotNull
> private String firstName;
> @Valid
> private EmbeddedObject embeddedObject;
> ...
> }
> class EmbeddedObject {
> @NotNull
> private String lastName;
> ...
> }
> Using the TestDTO on a page in the following way:
> class MyPage{
> ...
> @Property
> private TestDTO testDTO;
> @Component(parameters = {"validate=testDTO"})
> private Form form;
> @Component(parameters = {"value=testDTO.firstName"})
> private TextField firstName;
> @Component(parameters = {"value=testDTO.embeddedObject.lastName"})
> private TextField embeddedField;
> ...
> }
> Submitting the form validates all the attributes correctly (also the embedded
> object validation error is listed in the t:errors component) but when it
> comes to BeanFieldValidator only lastName is on the Environment Stack in the
> BeanValidationContext. As TestDTO doesn't contain the property lastName and
> there's no objectpath available it doesn't traverse down the objects and
> can't assign the correct validation error.
> The outcome is that even the property is validated correctly, there's no
> red-frame (css error class) on the appropriate field in the UI.
> For reference:
> http://tapestry.1045711.n5.nabble.com/tapestry-beanvalidation-td4921787.html
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)