在primefaces autocomplete事件中将值重置为null

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)

jab*_*245 5

当您修改“自动完成”文本字段的文本内容时,将在后备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)

我希望这有帮助。


另一种选择是类似于搜索文本字段旁边的“清除”或“重置”按钮,以使用户清楚该值将被清除。