Jsf 将ValueChangeListener与Richfaces建议框一起使用
我正在尝试使用Richfaces建议框。根据从suggestionbox中选择的值,我尝试更改它旁边的outputtext值 以下是我的xhtml代码:Jsf 将ValueChangeListener与Richfaces建议框一起使用,jsf,richfaces,Jsf,Richfaces,我正在尝试使用Richfaces建议框。根据从suggestionbox中选择的值,我尝试更改它旁边的outputtext值 以下是我的xhtml代码: <td align="left"> <h:inputText onchange="submit();" immediate="true" id="productname" valueChangeListener="#{salesBean.updateProductRate}" autocomplete="false"/
<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>
当我在inputtext(例如)中键入“a”时,Richfaces suggestionbox会显示以字母“a”开头的姓名列表。如果我选择其中一个名称(比如“asd”),则只有我先前键入的“a”会在表单中提交
如何使整个名称“asd”以表格形式提交?请帮忙
提前谢谢
(我正在使用JSF1.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;
}
HtmlOutputText productRate=新的HtmlOutputText();
公共字符串updateProductRate()
{
System.out.println(“已成功输入”);
SalesDAO=新的SalesDAO();
//getProductRate().setValue(dao.fetchRateForProductEntered(evt.getNewValue().toString());
//selectedProductName=dao.fetchRateForProductEntered(evt.getNewValue().toString());
返回“成功”;
}
公共HtmlOutputText getProductRate(){
收益率;
}
public void setProductRate(HtmlOutText productRate){
this.productRate=productRate;
}
公共列表建议(对象输入)
{
SalesDAO=新的SalesDAO();
List suggestionList=新建ArrayList();
字符串用户输入=(字符串)输入;
如果(!userInput.trim().equalsIgnoreCase(“”))
{
suggestionList=dao.SuggestionProductFromDatabase(用户输入);
}
返回建议列表;
}
私有字符串selectedProductName;
公共字符串getSelectedProductName(){
返回selectedProductName;
}
公共无效集合selectedProductName(字符串selectedProductName){
this.selectedProductName=selectedProductName;
}
同样的错误依然存在。Plz帮助。您似乎想从建议框中选择一个产品,然后调用
{salesBean.updateProductRate}
来计算所选产品的产品价格
您可以通过使用a4j:support
将onselect
事件直接附加到建议框,而不是使用建议框提供值的h:inputText
的valueChangeListener
<h:inputText immediate="true" id="productname" />
<br/>
<h:outputText id="rate" value="#{salesBean.productRate}"/>
<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>
</rich:suggestionbox>
在
salesBean
中,添加selectedProductName
属性及其getter和setter。在updateProductRate()
中,您可以使用selectedProductName
计算产品价格,并将结果分配给productRate
,感谢您的回复。抱歉耽搁了。这个问题还没有解决。请检查我更新的代码。从建议列表中选择值后是否调用setSelectedProductName()
和updateProductRate()
方法?顺便说一句,我没有发现你的更新代码中有任何错误。很抱歉之前的评论。我有点困惑。你的更新工作得很好。谢谢