首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JSF / PrimeFaces -如何为自定义验证程序显示消息,但不显示同一组件上所需的验证消息

JSF / PrimeFaces -如何为自定义验证程序显示消息,但不显示同一组件上所需的验证消息
EN

Stack Overflow用户
提问于 2018-03-22 12:37:27
回答 1查看 1.1K关注 0票数 1

我有一个使用JSF2的PrimeFaces实现。我使用的是<p:selectOneRadio />组件。当用户在无线电组件中选择“否”时,我想显示一条自定义消息。为此,我创建了一个自定义验证器,与消息组件一起,一切都很好。但是,也需要该组件。我不希望所需组件的"Value is required“验证错误出现在消息组件中。在这种情况下,我只希望突出显示字段和标签。

因此,问题是:如何指定给定的<p:message />组件只显示来自自定义验证器的错误,而不显示来自所需验证器的错误?

几年前,我看到了一个类似问题的答案:您可以将message for属性设置为实际上不存在的组件,并通过FacesContext将消息添加到该组件中。比如:<p:message for="fooMsg" /> . FacesContext.getCurrentInstance().addMessage("fooMsg",msg)

然而,这似乎行不通。JSF抛出一个无法找到组件"fooMsg“的错误。

这是我目前的密码。

构成部分:

代码语言:javascript
运行
AI代码解释
复制
<p:outputLabel for="foo" id="foolbl"
    value="Some label text." />
<br />
<p:message for="foo" />
<p:selectOneRadio id="foo" layout="pageDirection"
    widgetVar="fooVar" required="true">
<f:selectItem itemLabel="Yes" itemValue="Yes" />
<f:selectItem itemLabel="No" itemValue="No" />
<p:ajax update="@this foolbl" process="@this" />
<f:validator validatorId="FooValidator" />
</p:selectOneRadio>

验证器:

代码语言:javascript
运行
AI代码解释
复制
@FacesValidator("FooValidator")
public class FooValidator implements Validator {

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {

        if (value != null) {
            String sValue = (String) value;
            if (sValue.trim().equalsIgnoreCase("No")) {
                FacesMessage msg = new FacesMessage("Summary",
                        "Detail");
                msg.setSeverity(FacesMessage.SEVERITY_ERROR);

                throw new ValidatorException(msg);
            }
        }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 23:12:49

首先,这是默认的JSF行为。为了解决您的问题,您可以使用jQuery检查是否选择了单选按钮,并在这种情况下隐藏消息,例如:

代码语言:javascript
运行
AI代码解释
复制
<h:form id="form">
    <p:outputLabel for="foo" id="foolbl" value="Some label text." />
    <br />
    <p:message id="foomsg" for="foo" />
    <p:selectOneRadio id="foo" layout="pageDirection" widgetVar="fooVar"
        required="true">
        <f:selectItem itemLabel="Yes" itemValue="Yes" />
        <f:selectItem itemLabel="No" itemValue="No" />
        <p:ajax process="@this" update="@this foolbl foomsg" />
        <f:validator validatorId="FooValidator" />
    </p:selectOneRadio>

    <p:commandButton process="@this foo" update="foo foolbl foomsg"
        oncomplete="if( !PF('fooVar').checkedRadio.length ) $('#form\\:foomsg').hide();" />
</h:form>

查看一下commandButton的oncomplete属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49438023

复制
相关文章
AngularJS 的输入验证机制:内置验证器、自定义验证器和显示验证信息
AngularJS 是一款流行的前端JavaScript框架,提供了强大的表单处理功能。其中一个关键特性是输入验证,即对用户输入进行验证以确保数据的有效性和完整性。本文将详细介绍 AngularJS 的输入验证机制,包括内置验证器、自定义验证器和显示验证信息等内容。
网络技术联盟站
2023/07/05
3920
XML封装与验证消息
Document document = DocumentHelper.createDocument(); document.setXMLEncoding(ChARSET_UTF_8); Element root = document.addElement("message"); Element head = root.addElement("head"); head.addElement("field").addAttribute("name"," ").setText(""); Element bo
用户3003813
2018/09/06
6380
thinkphp验证码不显示
分析了半天,用下面的代码发现图片输出前已经输出了有3个字节字符,导致图片无法被正确识别
老高的技术博客
2022/12/27
1.1K0
WordPress 技巧:在注册页面显示自定义消息
如果你的 WordPress 博客是开放注册,并且你想在注册界面给用户做些自定义信息提示,你可以在当前主题的 functions.php 文件加入以下代码:
Denis
2023/04/15
6910
解决了无法显示验证码的问题怎么办_验证码不能显示的问题
晚上检测一个站的时候,猜解出了密码,扫出了后台,可验证码就是无法显示,难道管理员故意弄的?不太可能吧?于是上网一搜,没想到还真找到了解决的方法。我的是Vista Ultimate,部分XP SP2也会有这个问题。好了,不废话了,解决办法如下:
全栈程序员站长
2022/10/04
1.2K0
[ASP.NET MVC]如何定制Numeric属性/字段验证消息
对于一个Numeric属性/字段,ASP.NET MVC会自动进行数据类型的验证(客户端验证),以确保输入的是一个有效的数字,但是呈现在页面上的错误消息总是一段固定的文本:“The field {0} must be a number”,本篇提供一种解决方案使我们可以对此验证消息进行定制。[源代码从这里下载] 目录 一、针对Numeric属性/字段默认验证消息 二、默认的验证消息来源于何处? 三、通过自定义ModelValidatorProvider替换Numeri
蒋金楠
2018/02/07
1.3K0
[ASP.NET MVC]如何定制Numeric属性/字段验证消息
消息验证码MAC入门指南
简单来说,MAC就是随消息一起传输的标签或数据,可以通过MAC对消息进行验证,已确定消息是否被篡改过。
bowenerchen
2022/12/04
2.5K7
消息验证码MAC入门指南
python实现验证码生成显示
from captcha.image import ImageCaptcha import numpy as np import matplotlib.pyplot as plt from PIL import Image import random number = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'
py3study
2020/01/09
8750
Python stomp 发送消息无法显示文本
根据官方的说, Stomp 如设置了 content-length 就认为是二进制的消息,如果没有设置的话就是文本消息。
HoneyMoose
2023/09/16
2640
Python stomp 发送消息无法显示文本
消息通知Notificatio在8.0上不显示,适配Android8.0
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
黄林晴
2019/08/31
1.2K0
python实现交叉验证_kfold显示不可迭代
from sklearn.model_selection import KFold
全栈程序员站长
2022/11/06
7750
Django 2.1.7 使用内置messages显示通知消息
在Web应用程序中,有时候需要在处理表单或其他类型的用户输入后向用户显示一次性通知消息(也称为“flash消息”),例如:用户注册成功、订单提交完成等信息。
Devops海洋的渔夫
2019/08/22
1.7K0
【说站】Python PyQt显示临时状态消息
1、为了在状态栏中显示临时状态信息,需要使用QStatusBar.showMessage()。
很酷的站长
2022/11/24
4850
地图组件上的自定义区域叠加层显示 ArcGis + GeoJson
最近参与了一个IOT环境项目,需要对某个城市的某几个区域做环境监控与治理,其中就用到了地图叠加层的功能,粗看很复杂,其实很简单,先来看一下效果,然后再来讲一下如何实现的:
风间影月
2018/10/09
2.1K0
地图组件上的自定义区域叠加层显示 ArcGis + GeoJson
authenticator验证码不显示_打电话报的验证码安全吗
【2021/07/14】记录 在修改代码中IDE闪烁了一下,原本正常的验证码图片就不显示了。但是没有报错,日志也没有记录。
全栈程序员站长
2022/10/04
8790
authenticator验证码不显示_打电话报的验证码安全吗
tp5之验证码不显示
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/17
1.1K0
tp5之验证码不显示
vue 自定义MessageBox 消息框组件
通过js this.$message() , 能显示一个消息组件 ; 所需知识点:
用户9914333
2022/07/22
2.2K0
点击加载更多

相似问题

重复显示jsf primefaces验证消息

21

重写Primefaces输入组件所需的验证消息

12

未显示primefaces验证消息(复合组件、primefaces和验证方法)

10

确定要在JSF中显示验证器消息的消息-小部件(Primefaces)

10

未显示JSF验证错误消息

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档