1

Primefaces AutoComplete を使用しており、Hibernate を使用してデータベースからレコードを取得しています。

テキストを入力すると、データベースから値を選択できます。私が達成したいのは、文字を入力するときに名前を選択すると、jsf ページの他の列にデータが入力されるようにすることです。たとえば、従業員名「SMITH」を選択すると、従業員番号、部門に SMITH の従業員番号と部門が入力されます。

私はjsfページに以下を持っています。

<p:autoComplete value="#{myMB.selectedEmployee}"
                            id="basicPojo" minQueryLength="3" 
                            completeMethod="#{myMB.complete}" var="p"
                            itemLabel="#{p.empName}" 
                             converter="#{myconverter}"
                            forceSelection="true"  > 

<h:outputLabel value="Emp Number" />
                        <h:outputText value="#{p.employeeNumber}" />

<h:outputLabel value="Department" />
                        <h:outputText value="#{p.employeeDepartment}" />
                    </p:autoComplete>

名前を選択すると、他のフィールドが表示されません。

この理由は何でしょうか?どうすれば望ましい結果を得ることができますか?

どんな助けでも大歓迎です。

編集 1

<p:dialog header="Create New Request" style="font-weight:bold"
                    widgetVar="requestNewDialog" resizable="false" 
        id="newDlg"             
    showEffect="fade" hideEffect="fade" appendToBody="true"
        modal="true" position="center top" width="850" height="450">
                    <h:panelGrid columns="2" cellspacing="2">
                        <h:outputText value="New Employee No:" />
                        <h:outputText value="" />
                    </h:panelGrid>
                    <p:separator />
                    <p:panelGrid columns="6">    
                        <h:outputLabel value="Employee # " for="emp" />
                        <p:autoComplete value="#
                       {myMB.selectedEmployee}"
               id="basicPojo" minQueryLength="3" 
               completeMethod="#{myMB.complete}" var="p"
               itemLabel="#{p.longName}" 
                       converter="#{employeeNameConverter}"
               forceSelection="true"  >
               <p:ajax event="itemSelect" update="num" 
                       listener="#{myMB.handleSelect}"  />      
            <h:outputLabel value="Name" for="name" />
            <h:outputText value="#{p.employeeNumber}" />
            </p:autoComplete>                       

        <h:outputLabel id="num" value="Department" for="dept" />
        <p:inputText id="dept" value="#{p.employeeNumber}" >
                        </p:inputText>
          </p:panelGrid>
     <p:separator />
         </p:dialog>

ManagedBean のcomplete メソッド

public List<Employee> complete(String query) {
        List<Employee> suggestions;
        suggestions = new ArrayList<Employee>();
        try {

            EmployeeQueryData q = new EmployeeQueryData ();             
            getService().getEmployee(q,query);              
            employee = q.getResult();    
            for (Employee p : employee) {
                if (p.getEmpName().toLowerCase().contains(query)); 
                    suggestions.add(p);    //               
            }
        } catch (Exception e) {             
        }    
        return suggestions;
    }
4

1 に答える 1

4

使用する<p:ajax event="itemSelect"...

<p:autoComplete>...
    <p:ajax event="itemSelect" update="someOtherFieldId someOtherFieldId2" />
</p:autoComplete>
于 2013-01-17T08:00:37.420 に答える