如何防止 PrimeFaces 向导的下一步按钮激活客户端验证?

2023-12-11

我的 JSF 2.2 + PrimeFaces 应用程序中有一个带有三个选项卡的向导。在每个选项卡中,我都有一个表单来捕获用户的数据。每个表单都有一些验证。现在,当我单击“下一步”进入下一个选项卡时,它正在验证表单中的数据。我不希望这种事发生。

用户将数据保存在一个选项卡中的数据中,然后他们想要继续前进。不需要表单上有数据即可移动到下一个选项卡。

我能够通过不进行客户端验证来解决此问题(即:不使用required输入字段上的单词)并仅在后端验证。问题是我想要客户端验证。

我的向导看起来像这样:

<h:form id="wizard">

    <p:wizard flowListener="#{afiliadoController.onFlowProcess}" nextLabel="Siguiente" 
    backLabel="Anterior" showStepStatus="true">

    <p:tab id="afiliadoTab" title="Afiliado">

            <p:growl autoUpdate="true"/>

            <p:panel styleClass="panels" id="panelAfiliado" style="margin-bottom:1em;" >

                <p:focus context="panelAfiliado"/>

                <h1> Agregue un Afiliado </h1>

                <h:panelGrid columns="4" styleClass="panelGrid" >

                    <p:outputLabel for="nombres" value="Nombres:" />

                    <p:inputText id="nombres" value="#{afiliadoController.afiliado.nombre}"
                    requiredMessage="Debe insertar un nombre." />

                    <p:outputLabel for="apellidos" value="Apellidos:" />

                    <p:inputText id="apellidos" value="#{afiliadoController.afiliado.apellido}"
                    requiredMessage="Debe insertar un apellido." />

                    <p:outputLabel for="estadoCivil" value="Estado Civil:" />

                    <p:selectOneMenu id="estadoCivil" effect="drop" value="#{afiliadoController.afiliado.estado_civil}" 
                    requiredMessage="Debe seleccionar un estado civil." >

                        <f:selectItem itemLabel="Estado Civil" itemValue=""/>
                        <f:selectItem itemLabel="Soltero" itemValue="S"/>
                        <f:selectItem itemLabel="Casado" itemValue="C"/>
                        <f:selectItem itemLabel="Union Libre" itemValue="U"/>
                        <f:selectItem itemLabel="Divorciado" itemValue="D"/>
                        <f:selectItem itemLabel="Viudo" itemValue="V"/>

                    </p:selectOneMenu>

                    <p:outputLabel for="direccion" value="Direccion:" />

                    <p:inputText id="direccion" value="#{afiliadoController.afiliado.direccion}"/>

                    <p:outputLabel for="telefono" value="Telefono:" />

                    <p:inputMask id="telefono" value="#{afiliadoController.afiliado.telefono}" mask="(999) 999-9999" 
                    requiredMessage="Debe insertar un telefono." />

                    <p:outputLabel for="fechaNacimiento" value="Fecha de Nacimiento:"/>

                    <p:calendar id="fechaNacimiento" yearRange="c-100:c" pattern="dd/MM/yyyy" navigator="true" 
                    value="#{afiliadoController.afiliado.fecha_nacimiento}" 
                    requiredMessage="Debe insertar su fecha de nacimiento." showOn="button" 
                    readonly="#{facesContext.currentPhaseId.ordinal eq 6}">

                        <p:ajax event="dateSelect" listener="#{afiliadoController.dateSelect}" update="edadAfi"/>

                    </p:calendar>

                    <p:outputLabel for="plan" value="Plan:" />                  
                    <p:selectOneMenu id="plan" effect="drop" value="#{afiliadoController.afiliado.plan}" 
                    requiredMessage="Debe seleccionar un plan." >

                        <f:selectItem itemLabel="Seleccione un plan" itemValue=""/>
                        <f:selectItem itemLabel="Vital Base" itemValue="1"/>
                        <f:selectItem itemLabel="Vital Elite" itemValue="2"/>
                        <f:selectItem itemLabel="Plan Vital Elite Internacional" itemValue="3"/>

                    </p:selectOneMenu>

                    <h:outputText value="Fecha: #{of:formatDate(now, 'dd/MM/yyyy')}"/>

                    <h:outputText value="Edad Afiliado: #{afiliadoController.afiliado.edad}" id="edadAfi"/>

                    <p:outputLabel for="modalidad" value="Modalidad:" />                    
                    <p:selectOneMenu id="modalidad" effect="drop" value="#{afiliadoController.afiliado.modalidad}" 
                    requiredMessage="Debe seleccionar una modalidad." required="true">

                        <f:selectItem itemLabel="Seleccione una modalidad" itemValue=""/>
                        <f:selectItem itemLabel="Solo Titular Del Contrato" itemValue="A"/>
                        <f:selectItem itemLabel="Titular del Contrato + Grupo Familiar" itemValue="B"/>

                        <f:validateBean disabled="#{!request.getParameter('validate')}" />

                    </p:selectOneMenu>

                    <p:commandButton value="Insertar" icon="fa fa-save" process="panelAfiliado" update="afiliadoTable"
                     actionListener="#{afiliadoController.insertAfiliado}" >

                        <f:param name="validate" value="true"/>

                     </p:commandButton>

                </h:panelGrid>         

            </p:panel>

    </p:tab>

    </p:wizard>

</h:form>

我故意只显示第一个选项卡以使其更具可读性。在第一个选项卡上我有两个<h:form>里面主要的<h:form>(我不确定这是否是好的做法。)

我这样做是因为我想要enter关键字在每个表单上单独工作。这<h:form>带身份证附属标签有一些验证。我希望这些验证仅在单击按钮时发生:

<p:commandButton value="Insertar" icon="fa fa-save" process="panelAfiliado" update=":wizard:tablaAfiliados:afiliadoTable"
                         actionListener="#{afiliadoController.insertAfiliado}" validateClient="true"/>

我不希望在单击“下一步”时发生这些验证。我能做些什么? (我知道 SO 中有一些类似的问题,但我无法完全得到答案。例如,下面的问题是使用自定义小部件变量。我尝试这样做,但发现了一些问题:

  1. 如何只在需要时显示后退按钮? (不显示在第一个选项卡上)

  2. 即使我使用@this,验证仍然存在。

我最好的选择是什么?

所需验证 PrimeFaces 向导


您有嵌套的表单。每一个<h:form>在一个选项卡中是在其他选项卡中<h:form>外部<p:wizard>。您不需要单独的表单,只需要外部向导的表单即可。

EDIT:

有一些适合我的解决方法(单击下一步后不验证字段,但单击我的按钮进行验证后进行验证)。

对于您不想在 NEXT 上验证的字段,请添加此标签(例如<h:inputText>)

<f:validateBean disabled="#{!request.getParameter('validate')}" />并在您的按钮中添加此标签<f:param name="validate" value="true"/>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止 PrimeFaces 向导的下一步按钮激活客户端验证? 的相关文章

随机推荐

  • 使用jQuery在IE10中动态提交文件上传表单

    我有一个表单 其唯一目的是上传文件 但出于用户体验的原因 我需要一个漂亮的按钮 加载文件对话框 选择文件后自动提交表单 原来的解决方案是这样的这个 JSFiddle 其中有一个加载文件对话框的链接 然后监听该对话框的change自动提交表单
  • 将 SDL 嵌入 GTK+

    我有一个使用 GTK 来显示一些漂亮的 GUI 的应用程序 但我使用 SDL 在 GTK 内显示一个小的 RGB 帧缓冲区 我使用以下代码将 SDL 引入 GTK char SDL windowhack 32 sprintf SDL win
  • Android使用路径中的空间和通用图像加载器加载本地图像

    我正在开发 Android 应用程序 我想在通用图像加载器的帮助下显示本地图像 但是 当我尝试显示本地图像路径中有空间的图像时 它无法显示图像 我按照以下方式尝试过 Uri fromFile new File newImagePath to
  • OWL:如何从超类中继承两个类之间的属性关系?

    假设我们有两个名为People and Disease 这些类通过对象属性相关has People has Disease People有子类 或个人 John and Disease有子类 或个人 Cancer John a People
  • 如何在Android中应用多个查询来过滤firebase数据结果?

    我想在回收者视图中显示城市 瓦拉纳西 性别 男 且工资在 5000 到 15000 之间的所有工人姓名 在这种情况下 必须显示所显示的工作人员的姓名 必须应用什么查询以及如何实现 首先 我认为你需要用双值保存工资 而不是字符串 您需要在工作
  • 用字符串+整数组成变量名并调用函数

    首先 我对这些很陌生 这个问题可能很愚蠢 无论如何 我有一个这样的程序 procedure Tform1 QueryChange sqltext String query Integer begin if query 1 then begi
  • 如何在 CQL 3 准备好的语句中绑定 IN 子句值?

    我有一张大致类似于 create table mytable id uuid something text primary key id 我正在尝试创建一个具有绑定子句的准备好的语句 PreparedStatement ps session
  • 如何使用 TCPDF 制作包含 2D 条形码的 2x6 标签,而不使用列或第 3 方类?

    三周以来 我想我就是这么慢 我尝试使用 TCPDF 自己的示例以及在该网站上找到的一些建议来弄清楚如何使用数据库记录来做到这一点 当其他人询问如何使用第 3 方补丁 类 来使事情顺利进行时 Asuni 先生回应了一些帮助请求 只是它可以在没
  • 如何在rails中使用jsonb

    我有一个以 Postgresql 9 4 作为后端的 Rails 项目 我有这样的专栏 t json slot details null false default 如何将其从 JSON 更改为 JSONB 我应该添加索引并将其更改为 JS
  • 如何使用 mysql udf json_extract 0.4.0 从 json 数组中提取行?

    我有一些 sql 想要传递到 mysql 存储过程中 我正在使用 mysql json udfs 0 4 0 labs json udfs linux glibc2 5 x86 64 中的 json 函数 我们正在运行 mysql 5 5
  • 对空数组使用 $push

    我有一个 mongo 文档 其中包含名为 events 的数组字段 该字段有时可能为空 我在用着 push将元素添加到 事件 数组中 问题是 当 events 字段为空时它无法工作 例如 如果在数据库中它看起来像这样 id ObjectId
  • 如何修剪字符串中的空格? [复制]

    这个问题在这里已经有答案了 我正在为 J2ME 应用程序编写此函数 因此我没有一些可用的更高级 现代的 Java 类 我正进入 状态java lang ArrayIndexOutOfBoundsException关于这一点 所以 显然它不喜
  • ASP javascript radiobutton启用禁用不包含在回发ajax中

    问题就在这里 我有一个单选按钮组 两个单选按钮 这些人最初都是残疾的 当用户单击复选框时 我通过设置动态启用 JavaScript 中的单选按钮rbtn disabled false 并对其父级 span 元素 执行相同操作 以便它在 IE
  • div 内的 JQuery .load()

    这让我抓狂 我搜索并尝试了一堆看起来应该有效的建议 所以我一定是做了一些愚蠢的事情 document ready function trigger click function var link this attr href target
  • R数据框字符串包含:第1列是否包含第2列?

    我有一个包含两列的数据框 Surname Email 1 house email protected 2 wilson email protected 我想创建一个逻辑向量来检查是否Surname包含在Email 因此结果应该是 Surna
  • 如何在 Flexbox 内获取具有外部高度和内部宽度的 div

    Problem 假设我们有一个具有给定宽度和高度的垂直 即 flex direction column Flexbox 容器 Flexbox 包含 div 每个 div 包含一个图像 所有 div 和图像都应该以相同的百分比收缩 增长以填充
  • Android Studio 模拟器找不到 wglgetextensionsstringarb

    When I try to start the emulator suddenly I started getting this error 几天前一切正常 如果我禁用 GPU 加速 那么它可以工作 但速度非常慢 我尝试在 BIOS 中重新
  • 如何打破条形图中的轴(也许使用plotrix gap.barplot)?

    我发现了很多解决轴中断和间隙的问题和答案 但大多数都是低质量的 SO 意义上的 因为没有示例代码 没有图片或复杂的代码 这就是我问的原因 我尝试使用library plotrix 如果有一个没有它和 或另一个库的解决方案 那对我来说也可以
  • 在 ui:repeat 或 p:dataTable 中使用 p:graphicImage

    我有一个 Bean 它有一个对象列表 其中包含代表数据库中图像的 StreamedContent 对象 Primefaces 类型 现在我想在 JSF 2 0 页面 使用 Primefaces 中迭代此列表 并显示图像 以这种方式仅显示一张
  • 如何防止 PrimeFaces 向导的下一步按钮激活客户端验证?

    我的 JSF 2 2 PrimeFaces 应用程序中有一个带有三个选项卡的向导 在每个选项卡中 我都有一个表单来捕获用户的数据 每个表单都有一些验证 现在 当我单击 下一步 进入下一个选项卡时 它正在验证表单中的数据 我不希望这种事发生