0

ドロップダウンとリセットボタンを備えたプライムフェイスのオートコンプリートが1つあります。

リセット ボタンを押した場合にドロップダウン リストから 1 つの値を選択すると、オートコンプリート ドロップダウンが空白になります (つまり、リセットされます)。しかし問題は、オートコンプリートをリセットした後、オートコンプリート ドロップダウン リストの値を取得できないことです。

これが私のコードです

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

1 に答える 1

1

コードを貼り付けたところ、3 つのエラーが発生しました。

1) this.name=""; 私はpersonNameに変更された文字列ではありません

2)p:commandButton は /> で終わる必要があります

3)せめて、ページにアクセスしようとすると、p:autocomplete が見つからないというエラーが出たので、p:autocomplete p: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;
    } 
 }
于 2013-09-18T06:56:58.913 に答える