首页 > 解决方案 > 在 ajax 事件期间禁用 p:selectOneMenu 的问题

问题描述

我试图在处理 ajax 事件时禁用组合框,但它将 null 发送到 bean setter 而不是选定的值。一旦我删除代码 onstart="PF('testA').disable();",它就会发送正确的值。

有没有人对此有解决方案。谢谢。

我正在使用 Primefaces 6.2、JSF2.2、Java 7 和 Glassfish 4.1。

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui">

<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />     
</h:head>
<h:body>
    <h:form id="themeForm">
            <p:selectOneMenu value="#{selectOneMenuViewA.theme}" widgetVar="testA">
                <p:ajax process="@form" event="itemSelect" update=":themeForm:themeId" onstart="PF('testA').disable();" oncomplete="PF('testA').enable()"/>  
                <f:selectItems value="#{selectOneMenuViewA.themes}" var="theme" itemLabel="#{theme}" itemValue="#{theme}" />
            </p:selectOneMenu>
            <h:outputText id="themeId" value="#{selectOneMenuViewA.theme}"/>
    </h:form>
</h:body>

public class SelectOneMenuViewA {

private String theme;   
private List<String> themes;

@PostConstruct
public void init() {        
    themes = Arrays.asList("a", "b", "c");
}

public String getTheme() {
    return theme;
}

public void setTheme(String theme) {
    this.theme = theme;
}

public List<String> getThemes() {
    return themes;
}
}

标签: primefacesjsf-2.2glassfish-4.1

解决方案


推荐阅读