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
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.