Ron*_*d91 5 jsf primefaces jsf-2
我有一个自动完成事件,一旦选择了值,就会正确触发.我删除文本框中的值并将值重置为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>
Run Code Online (Sandbox Code Playgroud)
public void handleDeviceSelect(SelectEvent event) {
String deviceSelect = event.getComponent().getId();
if (deviceSelect.equalsIgnoreCase("deviceAuto")) {
Device selectedDevice = deviceMgr.getDevicebyNickname(device.getNickname());
setDevice(selectedDevice);
}
updateInterface();
}
Run Code Online (Sandbox Code Playgroud)
当您修改“自动完成”文本字段的文本内容时,将在后备bean上调用搜索方法(也称为completeMethod)。null如果您得到一个空字符串,可以将值重置为该值。
菜豆
// 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;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我使用Apache Commons StringUtils.isBlank(String)来检查字符串是否为null或仅包含空格字符。
JSF视图
在您的XHTML文件中,您可能想收听任何Ajax事件以更新您的视图-或者您自己弄清楚所需的事件(模糊,更改等):
// 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。
另一种选择是类似于搜索文本字段旁边的“清除”或“重置”按钮,以使用户清楚该值将被清除。
| 归档时间: |
|
| 查看次数: |
20485 次 |
| 最近记录: |