[ 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: 2.4.0) 1.19.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 > Priority: Minor > Fix For: 1.19.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 (v7.6.3#76005)