如何在按下重置按钮后的<p:autocomplete>下拉列表中获取值列表。</p:autocomplete>

时间:2013-09-17 08:35:07

标签: jquery jsf primefaces

我有一个自动填充功能,包含下拉菜单和一个重置按钮。

如果我按下重置按钮,从下拉列表中选择一个值后,自动完成下拉列表变为空白(即它将被重置)。但问题是重置自动完成后我无法获取自动完成下拉列表中的值。

这是我的代码

的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;
}

1 个答案:

答案 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;
    } 
 }