rich:tabPanel和字段必需时的问题=“true”

时间:2010-03-25 18:39:16

标签: ajax jsf richfaces tabpanel

让我们考虑以下简化示例:

我们有两个标签<rich:tabPanel switchType="ajax">,每个标签都有<h:inputText value="" required="true" />,目前我们想从一个标签切换到另一个标签,而inputText是空的(我们不想提交值无论如何,我们想要转到另一个标签,我们得到"Validation Error: Value is required."

示例代码:

 <!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich"
 >
        <a4j:form id="mainForm"
            reRender="mainForm"
            ajaxSubmit="true">

            <rich:tabPanel switchType="ajax">
                <rich:tab label="TabA" >
                    <a4j:region>
                        <h:outputText value="Tab A content" />
                        <h:inputText value="" required="true" />
                    </a4j:region>
                </rich:tab>
                <rich:tab label="TabB">
                    <a4j:region>
                        <h:outputText value="Tab B content" />
                        <h:inputText value="" required="true" />
                    </a4j:region>
                </rich:tab>
            </rich:tabPanel>
            <rich:messages />
        </a4j:form>
 </html>

1 个答案:

答案 0 :(得分:1)

您应该将“immediate”属性添加到tabPanel。引用docs这意味着tabPanel:

  

“...必须转换组件值   立即验证(即在期间)   相反,应用请求值阶段)   而不是等到一个过程   验证阶段“

例如:

<rich:tabPanel switchType="ajax" immediate="true">