gpt4 book ai didi

jsf - 在 primefaces 自动完成事件中将值重置为 null

转载 作者:行者123 更新时间:2023-12-04 17:25:52 25 4
gpt4 key购买 nike

我有一个自动完成事件,一旦选择了一个值,它就会正确触发。我希望在我删除文本框中的值并将该值重置为 null 后触发另一个事件。我正在考虑使用 onChange 属性,但我遇到了问题,所以我恢复了我的原始代码。

<p:autoComplete id="deviceAuto" dropdown="true" scrollHeight="250" 
value="#{summaryReportController.device.nickname}"
forceSelection="true"
completeMethod="#{summaryReportController.deviceComplete}">
<p:ajax event="itemSelect"
listener="#{summaryReportController.handleDeviceSelect}"
update="printThis" />
</p:autoComplete>

public void handleDeviceSelect(SelectEvent event) {
String deviceSelect = event.getComponent().getId();
if (deviceSelect.equalsIgnoreCase("deviceAuto")) {
Device selectedDevice = deviceMgr.getDevicebyNickname(device.getNickname());
setDevice(selectedDevice);
}
updateInterface();
}

最佳答案

当您修改 AutoComplete 文本字段的文本内容时,将在支持 bean 上调用搜索方法(又名 completeMethod)。您可以将该值重置为 null如果你得到一个空字符串。

支撑 bean

// insert getter and setter for the device property ...

/** Search for devices by name */
public List<String> deviceComplete(String search) {
if (StringUtils.isBlank(search)) {
setDevice(null); // textfield was cleared, reset device value!
return Collections.emptyList();
} else {
// search for devices ...
return deviceNames;
}
}

请注意,我使用了 Apache Commons StringUtils.isBlank(String)检查字符串是否为空或只包含空白字符。

JSF 查看

在您的 XHTML 文件中,您可能想要监听任何 Ajax 事件来更新您的 View ——或者您自己找出您需要的事件(模糊、更改等等):

<p:autoComplete ...>
<p:ajax event="itemSelect" listener="..." update="..." />
<p:ajax process="@this" update="..." />
</p:autocomplete>

我希望这有帮助。

另一种选择可能是搜索文本字段旁边的“清除”或“重置”按钮,以向用户明确表示该值将被清除。

关于jsf - 在 primefaces 自动完成事件中将值重置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877967/

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