如何跳过ajax调用的验证?

Kus*_*ahu 0 validation ajax jsf selectonemenu primefaces

我有一个h:inputText,h:selectonemenu和commandbuton.Inputtext是必填字段,我将其定义为immediate ="true".然后,当我单击按钮时,我想将selectonemenu的当前值传递给托管bean.但它的passig null.如何管理此验证,以便我可以在托管bean中获取selectOneMenu的值.

我的代码是......

<h:inputText id="inputSome" required="true" requiredMessage="Pls enter something"/>
        <h:message for="inputSome"></h:message>
        <h:selectOneMenu id="recepients" value="#{controller.selected}" immediate="true">
            <f:selectItem itemLabel="Select" itemValue=""/>
            <f:selectItems value="#{controller.tempNameList1}"></f:selectItems>


        </h:selectOneMenu>

        <p:commandButton value="Add" action="#{controller.submit}"
            immediate="true"/>
Run Code Online (Sandbox Code Playgroud)

Saz*_*man 5

当您immediate=true输入commandButton时,将Invoke Application直接执行阶段,跳过(和包括)验证后的阶段.因此,也会跳过"应用模型值"阶段,并且托管bean的属性保持未初始化状态.这会导致您为值的值传递null selectOneMenu.解决方案是,您必须手动检索selected控制器的属性值,如下所示:

 Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

    for (String key : paramMap.keySet()) {
        if (key.contains("recepients")) {
            selected = Integer.parseInt(paramMap.get(key));
        }
    } 
Run Code Online (Sandbox Code Playgroud)