我有一个表单,用户必须输入员工的身份证(徽章)号码。员工是以徽章编号为主键的POJO。他们可以输入徽章编号,但如果他们不知道某个人的身份证,我会在输入文本框旁边提供一个按钮,弹出另一个表单,用户可以搜索任何员工数据以查找正确的徽章编号。他们可以点击徽章编号,javascript会使用。
将此值粘贴到父表单中function selectCode(pasteValue, formId) {
window.opener.document.getElementById(formId).value = pasteValue;
self.close();
}
但是这个事件并没有在父表单中激活我的AJAX事件,该表单应该在此facelets片段中的徽章编号文本输入框下方显示员工的姓名和部门。
<h:outputText value="Manager :"/>
<h:panelGroup>
<h:outputText value="Badge "/>
<p:inputText id="managerBadge" title="Type a badge or click the Badge Finder Button to search Employees" value="#{bean.dept.manager}" required="false" converter="#{employeeConverter}">
<p:ajax update="@form" /></p:inputText>
<p:button onclick="open_finder(this.form.id, 'managerBadge', 'findBadge'); return false;" value="Badge Finder" title="Click to Open Badge Finder" />
<br />
<h:outputText id="manager" value="#{bean.dept.manager.fname} #{bean.dept.manager.lname} Dept: #{bean.dept.manager.home_dept_number}"/>
</h:panelGroup>
<p:message for="managerBadge" />
当在框中键入徽章并且按预期显示人员姓名时,AJAX将触发。这是一个截屏。在“管理器”框中,我输入了ABC123,我的姓名和部门按预期显示在下面。但是当我像使用Supervisor框一样使用徽章查找器时,表单没有更新,我看不到我的名字和部门显示在输入框下方。
我在Primefaces p:ajax标签上尝试了一些其他的AJAX事件,但没有运气。我还试图切换到使用员工字段的p:autocomplete,但这些问题可能需要另一个SO问题帖。