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

Timo Rantalaiho updated WICKET-2104:
------------------------------------

    Fix Version/s: 1.5-M1

See the original mailing list discussion

  
http://www.nabble.com/FormTester-selectMultiple-CheckBoxMultipleChoice-help-td21971209.html#a22004300

for a potential workaround.

If working workarounds can be found, we'll only tackle this in Wicket 1.5.

> FormTester does not toggle selected values when using selectMultiple
> --------------------------------------------------------------------
>
>                 Key: WICKET-2104
>                 URL: https://issues.apache.org/jira/browse/WICKET-2104
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.5
>         Environment: Ubuntu 8.04, Java 1.6
>            Reporter: ray bon
>            Assignee: Timo Rantalaiho
>             Fix For: 1.5-M1
>
>
> FormTester.selectMultiple only appends values, there is no way to replace or 
> 'uncheck' items in a multiple select. This is contrary to the documentation 
> in the source which does mention a toggle.
> This is different from issue WICKET-1893. The solution there affects the 
> model prior to submit().
> Following are three methods that could be added to implement the toggle 
> capability:
> add to inner class
>       protected abstract class ChoiceSelector :
>               /**
>                * Implements removal of current selection(s) to allow toggle 
> behaviour of assignValueToFormComponent.
>                * 
>                * @param formComponent
>                *            a <code>FormComponent</code>
>                */
>               protected void doUnSelect()     // should this be final?
>               {
>                       // multiple selectable should remove unselected 
> option(s)
>                       removeFormComponentValues(formComponent);
>               }
> add to FormTester
>       /**
>        * Simulates selecting multiple options for the 
> <code>FormComponent</code>. The
>        * method only support multiple selectable <code>FormComponent</code>s.
>        * 
>        * @see #select(String, int)
>        * 
>        * @param formComponentId
>        *            relative path (from <code>Form</code>) to the selectable
>        *            <code>FormComponent</code>
>        * @param indexes
>        *            index of the selectable option, starting from 0
>        * @param toggle
>        *            set to <code>true</code> to clear existing selected 
> option(s)
>        *            set to <code>false</code> to append to existing selected 
> option(s)
>        */
>       public void selectMultiple(String formComponentId, int[] indexes, 
> boolean toggle)
>       {
>               checkClosed();
>               ChoiceSelector choiceSelector = 
> choiceSelectorFactory.createForMultiple((FormComponent)workingForm.get(formComponentId));
>               
>               if (toggle)
>               {
>                       choiceSelector.doUnSelect();
>               }
>               selectMultiple(formComponentId, indexes);
>       }
> add to FormTester
>       /**
>        * Removes <code>FormComponent</code>'s values from request parameter.
>        * 
>        * @param formComponent
>        *            a <code>FormComponent</code>
>        */
>       private void removeFormComponentValues(FormComponent formComponent)
>       {
>               if (parameterExist(formComponent))
>               {
>                       Map newParameters = new HashMap();      // could also 
> get parameters from request and clear()
>                       newParameters.put(formComponent.getInputName(), new 
> String[0]);
>                       
> baseWicketTester.getServletRequest().setParameters(newParameters);
>               }
>       }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to