You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2013/08/23 19:18:51 UTC

[jira] [Resolved] (ISIS-478) Provide conditional choices, defaults and validation between action parameters

     [ 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