You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Pedro Santos (JIRA)" <ji...@apache.org> on 2009/09/11 20:00:57 UTC

[jira] Updated: (WICKET-2465) ListMultipleChoice - convertChoiceIdsToChoices

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

Pedro Santos updated WICKET-2465:
---------------------------------

    Priority: Blocker  (was: Major)

> ListMultipleChoice - convertChoiceIdsToChoices
> ----------------------------------------------
>
>                 Key: WICKET-2465
>                 URL: https://issues.apache.org/jira/browse/WICKET-2465
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4.1
>         Environment: tomcat 6
>            Reporter: Pedro Santos
>            Priority: Blocker
>
> The method convertChoiceIdsToChoices on ListMultipleChoice has to converts submitted choice ids to choice objects.
> Bug: it do not resolve my second selection on component correctly.
> Ex: I have an list with items a, b, c, d.
> 1 - select item "a"
> 1.1 ListMultipleChoice component receive a collection,  containing the choice "a" object, on model.
> 2 - select item "b"
> 2.1 ListMultipleChoice component receive an empty collection on model.
> simple debugging the component convertInput process, I do discover that the problem is occurring cause the method convertChoiceIdsToChoices is comparing an wrong 'old selected choice IdValue' with an 'right received choice id'. At line 291:
>                     if (getChoiceRenderer().getIdValue(choice, index).equals(ids[i]))
> the index variable passed to IChoiceRenderer, do not reflect the original index of the old choice, so the choice IdValue reached to old selection are wrong. The value reached id only his index on the "choices"( List variable). On this way, the comparison with "ids[i]", that reflect the 'right received choice id'  fails.
> 	protected List<T> convertChoiceIdsToChoices(String[] ids)
> 	{
> 		ArrayList<T> selectedValues = new ArrayList<T>();
> 		// If one or more ids is selected
> 		if (ids != null && ids.length > 0 && !Strings.isEmpty(ids[0]))
> 		{
> 			// Get values that could be selected
> 			final List<? extends T> choices = getChoices();
> 			// Loop through selected indices
> 			for (int i = 0; i < ids.length; i++)
> 			{
> 				for (int index = 0; index < choices.size(); index++)
> 				{
> 					// Get next choice
> 					final T choice = choices.get(index);
> 					if (getChoiceRenderer().getIdValue(choice, index).equals(ids[i]))
> 					{
> 						selectedValues.add(choice);
> 						break;
> 					}
> 				}
> 			}
> 		}
> 		return selectedValues;
> 	}

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