[
https://issues.apache.org/jira/browse/ISIS-674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Haywood updated ISIS-674:
-----------------------------
Fix Version/s: (was: core-1.9.0)
core-1.10.0
> Allow action parameters to be defaulted based on the (change of) value of
> other parameters.
> -------------------------------------------------------------------------------------------
>
> Key: ISIS-674
> URL: https://issues.apache.org/jira/browse/ISIS-674
> Project: Isis
> Issue Type: New Feature
> Components: Core, Core: Viewer: Wicket
> Affects Versions: viewer-wicket-1.3.1, core-1.3.0
> Reporter: Dan Haywood
> Assignee: Dan Haywood
> Priority: Minor
> Fix For: core-1.10.0
>
>
> For example:
> public void foo(
> Charge charge,
> BigDecimal amount,
> String description) {
>
> }
> public String default2Foo(Charge charge, BigDecimal amount) {
> return charge != null && amount != null? amount + " "
> charge.getDescription() : null;
> }
> Here, the value of the 'description' parameter is defaulted from that of both
> the preceding 'charge' and 'amount' parameters. Changing either should cause
> the default value for the 'description' to be recomputed.
> This is analogous to the way that choices are recomputed for
> category/subcategory, see ActionParametersFormPanel:
> @Override
> public void onUpdate(AjaxRequestTarget target, ScalarModelProvider
> provider) {
> final ActionModel actionModel = getActionModel();
> final ObjectAdapter[] pendingArguments =
> actionModel.getArgumentsAsArray();
> try {
> final ObjectAction action =
> actionModel.getActionMemento().getAction();
> final int numParams = action.getParameterCount();
> for (int i = 0; i < numParams; i++) {
> final ScalarPanelAbstract paramPanel = paramPanels.get(i);
> if(paramPanel != null) {
> // this could throw a ConcurrencyException as we may
> have to reload the
> // object adapter of the action in order to compute
> the choices
> // (and that object adapter might have changed)
> if(paramPanel.updateChoices(pendingArguments)) {
> <<<<<< THIS LOOKS SIMILAR TO WHAT NEEDS TO BE
> DONE...
> target.add(paramPanel);
> }
> }
> }
> } catch(ConcurrencyException ex) {
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)