Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.0.BETA
-
Fix Version/s: 4.1
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Tomcat 7
Description
I created an array of SelectItem objects and bound it to the ace:autoCompleteEntry component like this:
<ace:autoCompleteEntry value="#{navigationModel.searchValue}"
valueChangeListener="#{navigationController.navigate}"
placeholder="Search"
filterMatchMode="contains"
width="180">
<f:selectItems value="#{navigationModel.currentComponentGroup.searchSelectItems}"/>
</ace:autoCompleteEntry>
The event in the ValueChangeListener is returning the selected label as the new value, instead of the value used in creating the SelectItem object.
The showcase uses a SelectItem constructor with a single parameter, the label that is used for label and value. We need it to work with the SelectItem constructors that also pass in a separate value.
<ace:autoCompleteEntry value="#{navigationModel.searchValue}"
valueChangeListener="#{navigationController.navigate}"
placeholder="Search"
filterMatchMode="contains"
width="180">
<f:selectItems value="#{navigationModel.currentComponentGroup.searchSelectItems}"/>
</ace:autoCompleteEntry>
The event in the ValueChangeListener is returning the selected label as the new value, instead of the value used in creating the SelectItem object.
The showcase uses a SelectItem constructor with a single parameter, the label that is used for label and value. We need it to work with the SelectItem constructors that also pass in a separate value.
I have committed the searchform to the showcase. It's at the top of the menu in showcase.xhtml.
Put a break point in navigationController.navigate and you should see the valuechangelistener event using the label instead of the value (in the navigate method, replace navigate(null,event.getNewValue().toString()); with navigate(null,null) first because the labels all have a ':' in them which is throwing an exception)