我有一个自动填充功能,包含下拉菜单和一个重置按钮。
如果我按下重置按钮,从下拉列表中选择一个值后,自动完成下拉列表变为空白(即它将被重置)。但问题是重置自动完成后我无法获取自动完成下拉列表中的值。
这是我的代码
的index.xhtml
<p:autocomplete id="name" binding="#{myBean.name}" value="#{myBean.personName}" completeMethod="#{myBean.retrieveNames}" dropdown="true"/>
<p:commandButton value="Reset" action="#{myBean.reset}" immediate="true" update="@form">
MyBean.java
private String personName;
private UIInput name;
public void resetUIValue(UIInput uiObj) {
uiObj.setSubmittedValue(null);
uiObj.setLocalValueSet(false);
uiObj.setValid(true);
uiObj.setValue("");
}
public void reset() {
this.clearFormValues();
this.resetUIValue(this.name);
}
public void clearFormValues()
{
this.name="";
}
public List<String> retrieveNames(String query)
{
List<String> result=new ArrayList<String>();
for(int i=0;i<10;i++)
{
result.add(query+i);
}
return result;
}
答案 0 :(得分:1)
我粘贴了你的代码并得到了3个错误:
1)this.name =“”;不是字符串我改为personName
2)p:commandButton应以/&gt;
结尾3)至少,当我尝试访问页面时,我收到错误,它找不到p:autocomplete,所以我将其更改为p:autocomplete p:autoComplete
之后当我按下重置时,autoComplete仍然有效。
以下是完整代码:
<h:form id="test" prependId="false">
<p:autoComplete id="name" binding="#{beanT.name}" value="#{beanT.personName}" completeMethod="#{beanT.retrieveNames}" dropdown="true"/>
<p:commandButton value="Reset" action="#{beanT.reset}" immediate="true" update="@form" />
</h:form>
@ManagedBean(name="beanT")
@ViewScoped
public class TestBean {
private String personName;
private UIInput name;
public UIInput getName() {
return name;
}
public void setName(UIInput name) {
this.name = name;
}
public void resetUIValue(UIInput uiObj) {
uiObj.setSubmittedValue(null);
uiObj.setLocalValueSet(false);
uiObj.setValid(true);
uiObj.setValue("");
}
public void reset() {
this.clearFormValues();
this.resetUIValue(this.name);
}
public void clearFormValues()
{
this.setPersonName("");
}
public List<String> retrieveNames(String query)
{
List<String> result=new ArrayList<String>();
for(int i=0;i<10;i++)
{
result.add(query+i);
}
return result;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
}