Я пытаюсь использовать поле для предложений Richfaces. На основании значения, выбранного в окне предложения, я пытаюсь изменить значение выходного текста рядом с ним.
Вот мой код xhtml:
<td align="left">
<h:inputText onchange="submit();" immediate="true" id="productname" valueChangeListener="#{salesBean.updateProductRate}" autocomplete="false"/>
</td>
<td align="left">
<h:outputText id="rate" binding="#{salesBean.productRate}"/>
</td>
<rich:suggestionbox width="290" suggestionAction="#{salesBean.suggest}" var="state" for="productname">
<f:facet name="nothingLabel">
<h:outputText value="No Products found" />
</f:facet>
<f:facet name="header">
<h:outputText value="Select Product" />
</f:facet>
<h:column>
<h:outputText value="#{state.name}"/>
</h:column>
</rich:suggestionbox>
Когда я набираю 'a' во входном тексте (например), поле предложения Richfaces показывает список имен, начинающихся с буквы "a" Если я выберу одно из имен (скажем, «asd»), только «a», которое я набрал ранее, будет представлено в форме.
Как сделать, чтобы имя целиком передавалось в форме asd? Пожалуйста, помогите
Заранее спасибо
(я использую JSF 1.2 вместе с Richfaces 3.3.2)
Обновленный код
<td align="left">
<h:inputText immediate="true" id="productname" autocomplete="false">
</h:inputText>
</td>
<td align="left">
<h:outputText id="rate" binding="#{salesBean.productRate}"/>
</td>
<rich:suggestionbox width="290"
suggestionAction="#{salesBean.suggest}" var="state" for="productname">
<f:facet name="nothingLabel">
<h:outputText value="No Products found" />
</f:facet>
<f:facet name="header">
<h:outputText value="Select Product" />
</f:facet>
<h:column>
<h:outputText value="#{state.name}"/>
</h:column>
<a4j:support event="onselect" action="#{salesBean.updateProductRate}" reRender="rate">
<f:setPropertyActionListener value="#{state.name}" target="#{salesBean.selectedProductName}" />
</a4j:support>
Это мой код Java
HtmlOutputText productRate = new HtmlOutputText();
public String updateProductRate()
{
System.out.println("Successfully entered ");
SalesDAO dao = new SalesDAO();
//getProductRate().setValue(dao.fetchRateForProductEntered(evt.getNewValue().toString()));
//selectedProductName = dao.fetchRateForProductEntered(evt.getNewValue().toString());
return "success";
}
public HtmlOutputText getProductRate() {
return productRate;
}
public void setProductRate(HtmlOutputText productRate) {
this.productRate = productRate;
}
public List<ProductSuggestOBJ> suggest(Object input)
{
SalesDAO dao = new SalesDAO();
List<ProductSuggestOBJ> suggestionList = new ArrayList<ProductSuggestOBJ>();
String userInput = (String)input;
if(!userInput.trim().equalsIgnoreCase(""))
{
suggestionList = dao.suggestProductFromDatabase(userInput);
}
return suggestionList;
}
private String selectedProductName;
public String getSelectedProductName() {
return selectedProductName;
}
public void setSelectedProductName(String selectedProductName) {
this.selectedProductName = selectedProductName;
}
Осталась та же ошибка. Пожалуйста, помогите.