JSF:2个字段的ajax密钥

时间:2013-11-05 07:23:17

标签: ajax jsf primefaces keyup

我有2个自动填充文件empname和empno如果我给empno剩余字段应该从数据库自动填充,同样到empname。但问题是当我插入新的empno剩余输入字段已被设置为null,同样到empname如何解决它。

<h:outputText  value="Employee_no"/>
        <h:inputText id="empp"    value="#{Bean.dto.empno}" >
           <p:ajax event="keyup"  update="empn,des,dep,loc"  listener="#{Bean.Workerno}"/>  
       </h:inputText>
       <h:outputText value="Employee_Name"/>
       <h:inputText id="empn"  value="#{Bean.dto.empname}" >
         <p:ajax event="keyup" update="empp,des,loc,dep"  listener="#{Bean.WorkerName}"/>  
       </h:inputText>
       <h:outputText value="Department"/>
       <h:inputText id="dep"    value="#{Bean.dto.de}" />
       <h:outputText value="Designation"/>
       <h:inputText   id="des"   value="#{Bean.dto.de}" />

        <h:outputText  value="Employee_no"/>
        <h:inputText id="empp"    value="#{Bean.dto.empno}" >
           <p:ajax event="keyup"  update="empn,des,dep,loc"  listener="#{Bean.Workerno}"/>  
       </h:inputText>
       <h:outputText value="Employee_Name"/>
        <h:inputText id="empn"  value="#{Bean.dto.empname}" >
         <p:ajax event="keyup" update="empp,des,loc,dep"  listener="#{Bean.WorkerName}"/>  
        </h:inputText>
        <h:outputText value="D"/>
        <h:inputText id="dep"    value="#{Bean.dto.d}" />
         <h:outputText value="Designation"/>
        <h:inputText   id="des"   value="#{Bean.dto.de}" />

BEAN

1 个答案:

答案 0 :(得分:3)

您的代码看起来不错......

有一件事是将ajax事件从KeyUp更改为blur

KeyUp - 强制为每个打字信件调用侦听器方法。

模糊 - 在输入内容后离开文本框时强制调用侦听器方法。

这里需要'模糊'事件,因为您需要在输入全部empno后调用数据库。 更改事件后,确保从DB检索值


至于我的观点,当ajax监听器强制时,你的数据库值不会达到workerNo()

JSF代码

<h:ouputText value="empno"/>
 <p:inputText id="empno" value="#{bean.empno}">
     <p:ajax  event="blur" listener="#{bean.ajaxEvent}" update="empname"/>
 </p:inputText>

 <h:ouputText value="empname"/>
 <p:inputText id="empname" value="#{bean.empname}">

Bean代码

//Setters and getters of empname,empno

 public void ajaxEvent()
 {
   if(getEmpNo()==//DB empno)
   {
      setEmpName("DB empname"); //Here only your updating the name field
   }
 }