1

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

我们有 2 个选项卡<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>
4

1 回答 1

1

您应该将“立即”属性添加到 tabPanel。引用文档这意味着tabPanel:

“...必须立即转换和验证组件值(即在应用请求值阶段),而不是等到流程验证阶段”

例如:

<rich:tabPanel switchType="ajax" immediate="true">
于 2010-03-25T22:18:05.950 回答