rich:tabPanel 以及字段具有 required="true" 时的问题

发布于 2024-08-26 05:22:25 字数 1587 浏览 11 评论 0 原文

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

我们有 2 个带有 的选项卡,每个选项卡都有 目前我们想要从一个选项卡切换到另一个选项卡,并且 inputText 为空(无论如何我们都不想从中提交值,我们想要转到另一个选项卡) get “验证错误:值是必需的。”

示例代码:

 <!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>

Let's consider following, simplified example:

We have 2 tabs withing <rich:tabPanel switchType="ajax">, each tab has <h:inputText value="" required="true" /> and at the moment we want to switch from one tab to another, and the inputText is empty (we don't want to submit value from it anyway, we want to go to another tab) we get "Validation Error: Value is required."

The example code:

 <!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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人间☆小暴躁 2024-09-02 05:22:25

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

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

例如:

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

You should add the "immediate" attribute to the tabPanel. To quote the docs this means that the tabPanel:

"...component value must be converted and
validated immediately (that is, during
Apply Request Values phase), rather
than waiting until a Process
Validations phase"

For example:

<rich:tabPanel switchType="ajax" immediate="true">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文