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

Dan Haywood resolved ISIS-478.
------------------------------

    Resolution: Fixed

Slightly descoped ... this has not been done for validateXxx, but has been done 
for choices.  This is sufficient for current purposes.. the only valid values 
are those that are in the choices list.

Can go round the loop later if need be on validation; a lot of the necessary 
infrastructure to implement such a reqt are now in place.

~~~
One minor refinement: it isn't necessary to provide all the parameters; and 
subset is also allowed.

eg given: foo(int x, String y, long z)

can have:

List<Integer> choices0Foo()
List<String>  choices1Foo(int x)
List<Long>    choices2Foo(int x, String y)

It is still valid to have all parameters if need be.




                
> Provide conditional choices, defaults and validation between action parameters
> ------------------------------------------------------------------------------
>
>                 Key: ISIS-478
>                 URL: https://issues.apache.org/jira/browse/ISIS-478
>             Project: Isis
>          Issue Type: New Feature
>          Components: Core, Viewer: Wicket
>    Affects Versions: viewer-wicket-1.2.0, core-1.2.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>             Fix For: viewer-wicket-1.3.0, core-1.3.0
>
>
> For example, suppose there is an action to specify an address, where we 
> specify the country, the state and the postcode.  We want the state to have 
> choices and a default dependent on the country, and we want the postcode to 
> be validated according to the rules of that country.
> public Address enterAddress(Country c, State st, @Named("Postcode") String 
> postcode) { ... }
> Any dependent parameter must supply a param-specific validate [this is a new 
> method prefix]:
> public String validate1EnterAddress(Country c, State st, String postcode) {  
> ... }
> public String validate2EnterAddress(Country c, State st, String postcode) {  
> ... }
> The choices and defaults for State also accept all param types preceding:
> public List<State> choices1EnterAddress(Country c) { ... }
> public State default1EnterAddress(Country c) { ... }
> When the user enters a value for the country, this is passed to these 
> methods.  If the user tabs directly to the State param without entering the 
> country, then these would return empty lists/value.
> If the user enters a value for the country, then corresponding entries for 
> the state and postcode, and then tabs back to the country and enters a 
> different value, then the validateNXxx methods are called (for all N > 0, 
> country being param 0).  If the validate methods indicate their current value 
> is invalid, then the values are set to null or to the recomputed default (if 
> a default method is available).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to