gpt4 book ai didi

javascript - JSF Richfaces 自动完成问题 - 使用..anything 发送隐藏参数

转载 作者:行者123 更新时间:2023-12-02 20:12:48 25 4
gpt4 key购买 nike

我想做什么来创建一个自动完成输入文本,但是提交表单时我想设置一个 id 或一个员工对象,而不是从输入字段获取字符串。有人可以帮忙吗..我如何使用隐藏输入字段或 javascript/ajax 函数来做到这一点。THX ..

<rich:autocomplete  mode="cachedAjax" tokens="," minChars="0"
autoFill="true" selectFirst="true"
autocompleteMethod="#{employeeBean.employeeSuggestions}" var="employee"
fetchValue="#{employee.firstName} #{employee.lastName}">
<h:inputHidden id="employeeId" value="#{employee.id}"/>
<h:column >
<h:outputText value="#{employee.firstName}" />
<h:outputText value="&#160;" />
</h:column>
<h:column>
<h:outputText value="#{employee.lastName}" />
</h:column>
</rich:autocomplete>
</h:panelGrid>

<h:panelGrid columns="3" cellspacing="5">
<h:commandButton value="#{messages.ok}"
action="#{departmentBean.addOrUpdateDepartment}">
</h:commandButton>
<h:commandButton action="department" value="#{messages.close}"
immediate="true" />
</h:panelGrid>

我愿意接受任何建议。

最佳答案

我也有同样的情况。我得出的最终答案是使用 jsFunction,并结合支持 bean 中的操作方法。

首先,ID 值将被短暂提取到自动完成字段中。调用 onselectitem JS 函数。 jsFunction 的execute 属性确保在调用我的populateEmployee 操作之前将获取的ID 值绑定(bind)到支持bean 字段中。 populateEmployee 转身,将字段中的 ID 值移动到我想要的任何位置,并将自动完成字段的值替换为我最终想要显示的内容(在本例中为名称)。然后重新呈现名称自动完成字段。

根据您的后端系统进行员工 ID 到姓名查找的速度,基础 ID 将显示一小会,同时运行您的 populateEmployee 的等效项。但这是我能得到的最接近可接受的(就我而言)工作解决方案的结果。

JSF:

<a4j:jsFunction name="chooseEmployee" execute="employeeSearchName" action="#{employeeSearchBean.populateEmployee}" render="selectedEmployeeId employeeSearchName"/>
<rich:autocomplete id="employeeSearchName" mode="ajax" minChars="3"
autocompleteMethod="#{employeeSearchBean.searchEmployees}" var="emp"
autofill="false" layout="table"
fetchValue="#{emp.employee.id}" value="#{employeeSearchBean.selectedEmployeeName}"
onselectitem="chooseEmployee()">
... output columns ...
</rich:autocomplete>
<h:outputText id="selectedEmployeeId" value="#{employeeSearchBean.selectedEmployeeId}"/>

支持 bean :

private String selectedEmployeeName;
private Integer selectedEmployeeId;

public void populateEmployee() {
selectedEmployeeId = Integer.parseInt(selectedEmployeeName);
for (EmployeeSearchEntry entry : data) {
if (entry.getEmployee().getId().equals(selectedEmployeeId)) {
selectedEmployeeName = entry.getNameLfm();
break;
}
}
}

关于javascript - JSF Richfaces 自动完成问题 - 使用..anything 发送隐藏参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com