struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (WW-2656) Support for Validation of Indexed Properties
Date Fri, 11 Apr 2014 11:47:15 GMT

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

Lukasz Lenart updated WW-2656:
------------------------------

    Description: 
Currently, there doesn't seem to be a method of validating an indexed property (ie. a collection)
 directly or indirecetly within an action.

For instance, given an action OrderAction with a property order of type Order where order
contains a collection trades of type Trade, the following is not possible:

{code:java}
@Validation
public class OrderAction {
	private Order order = new Order();

	@Validations(requiredFields = {
		@RequiredFieldValidator(message = "", key = "errors.required", fieldName = "order.trades[].field1"),
		@RequiredFieldValidator(message = "", key = "errors.required", fieldName = "order.trades[].field2"),
	})	
	public String execute() throws Exception {
	     ....
        }
{code}
The closest thing to support for something like the above is using the VisitorFieldValidator
validator. Although it has the following disadvantages:
1. It must be placed on the target object (invasive and not context sensitive)
2. It does not work with an indirect collection  (as in the example above)

Something like this should be possible (even struts1 validator supports indexedListProperty)

On a related topic, it should be possible to do the following to display the error in the
resulting view:
{code:html}
<s:fielderror><s:param>order.trades[2].field1</s:param></s:fielderror>
{code}

  was:
Currently, there doesn't seem to be a method of validating an indexed property (ie. a collection)
 directly or indirecetly within an action.

For instance, given an action OrderAction with a property order of type Order where order
contains a collection trades of type Trade, the following is not possible:

@Validation
public class OrderAction {
	private Order order = new Order();

	@Validations(
		requiredFields = {
			@RequiredFieldValidator(message = "", key = "errors.required", fieldName = "order.trades[].field1"),
			@RequiredFieldValidator(message = "", key = "errors.required", fieldName = "order.trades[].field2"),
		}
	)	
	public String execute() throws Exception {
		....
                      }

The closest thing to support for something like the above is using the VisitorFieldValidator
validator. Although it has the following disadvantages:
1. It must be placed on the target object (invasive and not context sensitive)
2. It does not work with an indirect collection  (as in the example above)

Something like this should be possible (even struts1 validator supports indexedListProperty)

On a related topic, it should be possible to do the following to display the error in the
resulting view:

<s:fielderror><s:param>order.trades[2].field1</s:param></s:fielderror>


> Support for Validation of Indexed Properties
> --------------------------------------------
>
>                 Key: WW-2656
>                 URL: https://issues.apache.org/jira/browse/WW-2656
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Core Interceptors
>    Affects Versions: 2.0.11
>            Reporter: Bob Tiernay
>             Fix For: 2.5
>
>
> Currently, there doesn't seem to be a method of validating an indexed property (ie. a
collection)  directly or indirecetly within an action.
> For instance, given an action OrderAction with a property order of type Order where order
contains a collection trades of type Trade, the following is not possible:
> {code:java}
> @Validation
> public class OrderAction {
> 	private Order order = new Order();
> 	@Validations(requiredFields = {
> 		@RequiredFieldValidator(message = "", key = "errors.required", fieldName = "order.trades[].field1"),
> 		@RequiredFieldValidator(message = "", key = "errors.required", fieldName = "order.trades[].field2"),
> 	})	
> 	public String execute() throws Exception {
> 	     ....
>         }
> {code}
> The closest thing to support for something like the above is using the VisitorFieldValidator
validator. Although it has the following disadvantages:
> 1. It must be placed on the target object (invasive and not context sensitive)
> 2. It does not work with an indirect collection  (as in the example above)
> Something like this should be possible (even struts1 validator supports indexedListProperty)
> On a related topic, it should be possible to do the following to display the error in
the resulting view:
> {code:html}
> <s:fielderror><s:param>order.trades[2].field1</s:param></s:fielderror>
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message