在 JSF 中验证字段并抛出异常,但将错误消息附加到另一个字段?

2023-12-30

我的页面上有一些需要交叉验证的字段。但我不希望此验证中显示错误<h:message>对于这个领域。

如果我将验证器添加到任何字段,并且验证器抛出异常,错误将显示在<h:message>对于这个领域。另一方面,如果我想禁止页面提交,我必须抛出异常。仅显示一些错误消息是不够的。

所以我在表单上创建了一些隐藏字段,并在那里附加了验证器。该验证器可以访问我想要验证的字段的 UIComponent,因此它可以验证它们。当验证器抛出异常时,错误显示在<h:message>对于隐藏字段,我可以将其放置在任何我想要的地方。

如果我将隐藏字段放在我想要验证的字段后面,一切都会正常。 (如果我把它放在前面,隐藏字段验证会在更新我的字段的组件之前触发)。

问题是它是令人讨厌的黑客:)有更好的方法吗?


问题是它是令人讨厌的黑客:)有更好的方法吗?

不适用于特定的功能要求。确实,JSF 只允许对多个字段的交叉验证进行非常细粒度的控制。

如果我将隐藏字段放在我想要验证的字段后面,一切都会正常。 (如果我把它放在前面,隐藏字段验证会在更新我的字段的组件之前触发)。

组件在验证阶段按照组件树中出现的顺序进行处理。如果你在某个时候有一个UIInput仍在处理中,那么您需要通过以下方式获取提交的值UIInput#getSubmittedValue()。如果它已经被处理,那么您需要通过以下方式获取提交的(以及转换和验证的)值UIInput#getValue()反而。

因此,如果您将隐藏字段与验证器一起放置after待验证的组件,那么你需要UIInput#getValue()来获取价值观。如果隐藏字段被放置before待验证的组件,那么你需要UIInput#getSubmittedValue()来获取价值观。

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

在 JSF 中验证字段并抛出异常,但将错误消息附加到另一个字段? 的相关文章

  • 仅忽略 JSF 中的无效查询参数

    我在用f viewparam捕获 JSF 页面的 GET 请求参数
  • 重定向和导航/转发之间有什么区别以及何时使用什么?

    JSF 中的导航有什么区别 FacesContext context FacesContext getCurrentInstance context getApplication getNavigationHandler handleNav
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 来自 jsp:include 的 JSF 1.2 自定义组件

    在开始回答我的问题之前 我先说一下我的不幸的局限性 我使用的是 JSF 1 2 而不是 2 所以没有复合组件 我使用 JSP 代替 Facelets 进行渲染 所以这些复合组件也没有 我不允许使用任何第三方标签库 richFaces ice
  • 如何在不同位置显示验证错误消息?

    我在用knockout js knockout validation插件 我正在添加示例小提琴 http jsfiddle net hsnCW 1 http jsfiddle net hsnCW 1 在此示例中 对数组进行了自定义验证以检查
  • codeigniter 动态表单输入名称的表单验证

    我有一个 codeigniter 应用程序 我的视图使用数据库行 ID 附加到输入名称以获取唯一 ID 这允许我在表单操作 即更新 中使用所有输入 我的视图语法 table tr th nbsp th th nbsp th th Custo
  • 在 JSF 自定义验证器中区分 ajax 请求和完整请求

    我的验证器需要知道它是完整请求还是 ajax 请求 在我当前的解决方案中 我检查 http 请求标头X Requested With元素 public void validate FacesContext context UICompone
  • laravel 正则表达式验证不起作用

    我刚刚开始使用 laravel 正在努力验证我的表单之一中的文本区域 文本区域用于用户简介 因此我只想允许使用字母 数字 空格和以下字符 这就是我所拥有的 validator Validator make Input all array b
  • 在约束验证器中使用 Guice 进行依赖注入

    我有一个在 ConstraintValidator 的实现中注入类的用例 我正在使用 Google guice 进行依赖项注入 目前无法在验证器内注入 我的场景的简化形式 内部模块 Provides Singleton public Ser
  • jsf中如何处理周围的命名容器?

    我有一个 jsf 2 0 页面 其中包含
  • 多步ActiveRecord的模型验证

    考虑具有以下字段的用户模型 名字 必填 姓氏 必填 电子邮件 必填 要求输入密码 电话 必填 大小 10 位数字 地址 必填 以及包含以下步骤的多步骤注册表单 第一步 包含 名字 姓氏 和 电子邮件 字段 第二步输入密码 电话和地址 您将如
  • 我应该在哪里对对象和字段进行 django 验证?

    我正在创建一个 Django 应用程序 它使用 Django Rest Framework 和普通的 django views 作为用户的入口点 我想对模型的独立字段以及整个对象进行验证 例如 字段 根据正则表达式函数输入的车牌是否正确 与
  • 会话销毁后如何使 viewscoped beans/viewmap 生存(使用客户端保存)?

    我在用着Myfaces 2 2 具有客户端状态保存功能 我看到 ViewScoped beans 和存储在 viewmap 中的数据在用户会话销毁后丢失 我开始知道 不确定这是否正确 这是预期的行为 但是在会话销毁后避免查看过期异常的方法是
  • 为什么这个 XHTML 表单无法验证?

    任何想法为什么这不会在这里验证 http validator w3 org validate by input http validator w3 org validate by input 表单输入标签似乎是错误的 但通读 XHTML 规
  • JSF 定制转换器

    我有一个像这样的自定义转换器 Override public Object getAsObject FacesContext facesContext UIComponent component String str System out
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗
  • Google 地图 api javascript 标签未验证

    正在寻找当前网站 正在使用 W3C 进行完全 HTML5 验证 这是无法验证的 Google 地图 API Javascript 标记 这是W3C的回应 没有开始字符引用 可能应该被转义为 它不喜欢 定义传感器是真还是假时 我尝试过以下方法
  • 访问自定义表单控件的有效值

    我创建了代表密码表单控件的自定义组件 下面的代码已简化 密码组件 html
  • laravel 5.4 在请求验证之前修改数据[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有我的自定义请求 它扩展了 Backpack CrudController 现在我想重写 ValidatesWhenResolv
  • JSF 登录期间何时创建会话?

    在JSF中 会话似乎是创建的before登录成功 即简单地请求登录页面就会导致创建一个新会话 为每个收到的请求而不是每个成功登录的用户创建一个会话似乎非常浪费 并且容易受到 DDoS 攻击 下面的代码非常通用 但显示了我所指的那种简单场景

随机推荐

  • 不支持 Android 身份验证方案 ntlm

    我使用 asynchttpClient 进行基本身份验证 http loopj com android async http http loopj com android async http 那是 loj lib 下面是我的代码 用户名随
  • 数组中的元素太多!

    抱歉 如果这是一个菜鸟问题 一段C代码 int array 5 int cnt for cnt 0 cnt lt 10 cnt 1 array cnt cnt 应该会报错吧 不 工作正常 但这是为什么呢 看起来 在第一行 定义了一个大于双倍
  • Firebase 功能:在 stackdriver 控制台中使用 Winston 进行日志记录

    我无法使winston https github com winstonjs winston记录器写入日志堆栈驱动程序 https cloud google com logging 安慰 我将我的函数部署为 google firebase
  • 如何修复本机客户端错误“连接正忙于处理另一个命令的结果”?

    我得到了一个Connection Busy With Results From Another Command当 SSIS 包运行时 来自 SQL Server Native Client 驱动程序的错误 仅当与 SQLServer 200
  • Libgdx Scene2d - 设置演员( TextField )填充?

    我在设置填充或类似于演员的东西时遇到了麻烦 找不到路 我想我可能必须在皮肤中添加一些东西 我有这个文本字段 textboxskin new Skin textboxskin add textfieldback new Texture dat
  • 如何在android中使用XML布局在图像视图中为图像制作圆角

    我已经尝试了很多次 但我知道我错过了一些东西 你们能解释一下吗 以下是我尝试过的
  • 对象是空的吗? [复制]

    这个问题在这里已经有答案了 检查对象是否为空的最快方法是什么 有没有比这更快更好的方法 function count obj obj var i 0 for var key in obj i return i 对于 ECMAScript5
  • 避免非虚拟析构函数的对象切片

    我正在为智能指针编写代码作为练习 使用在线教程 1 http www davethehat com articles smartp htm 2 http www codeproject com Articles 15351 Implemen
  • 你能在 mdbg 中看到评估堆栈吗?

    假设我有以下 CIL ldc i4 40 lt a breakpoint is set here ldc i4 2 add box int32 call void mscorlib System Console WriteLine stri
  • 使用 Android 提交至 Google 电子表格表单

    第一次在这里提问 通常我不用问就能找到答案 但这一次我陷入了困境 无法弄清楚我错过了什么 我只是想让我的 Android 应用程序在网站上填写表格并提交 我不需要应用程序对发回的任何数据执行任何操作 只需填写表格并提交即可 基本上我正在尝试
  • Dalvik JIT 工作流程

    我对 dalvik vm Android 感兴趣 我试图通过 JIT 的代码来找出它执行的操作以及它如何选择跟踪 我无法遵循代码 因此 我请求所有人帮助我建议 JIT 中执行跟踪选择和翻译的相关函数 你可以尝试 git log grep J
  • 调用命令行程序的Web应用程序框架

    我们正在设计一个 Java EE Web 应用程序 在 tomcat 上运行 它旨在成为命令行程序的网络界面 是否有任何框架 应用程序允许这样做 即 JSP 页面将在内部向安装在与 Tomcat 服务器相同的服务器上的程序发出命令 命令行是
  • 左连接和左外连接的区别

    我想知道mySQL中的LEFT JOIN和LEFT OUTER JOIN是否有什么区别 如果没有区别那为什么会有两种不同的方式呢 提前致谢 它们是相同的 我认为您想要放入 外部 的唯一原因是为了清楚起见 为了澄清联接中的第一个表不需要它在第
  • extjs 面板适合布局

    我有一个面板 我正在将它渲染到一个容器中 我想要panel以适应containerheight 并且不想指定高度panel 但似乎不起作用 有什么办法可以做到吗 代码片段 div style width 100 height 100 div
  • 将 CellRendererToggle 的单行设置为不一致

    在 Gtk 3 上 我使用的是TreeModel存储嵌套信息并用 a 显示它CellRendererText and a CellRendererToggle 用户可以单击每个切换按钮 当存在嵌套按钮并且它们不处于相同状态时 我希望上层按钮
  • React 暴露组件函数

    基于此链接上的示例http reactjs cn react tips expose component functions html http reactjs cn react tips expose component function
  • 带有列表项的 GWT 无序列表

    我完全坚持在 gwt 中创建 css 驱动的菜单 在渲染的结果中 它应该看起来完全像这样 div class topbar div class container fixed h3 a href class logo test a h3 u
  • 制作Python批处理文件

    如何创建一个bat文件来运行python文件 特别是包含pygame bat文件 Simple 只需将以下内容作为批处理文件的第一行 python x 0 goto eof 批处理文件的其余部分是 Python 程序 这是一个完整的例子 p
  • 捕获具有同一组的 和 (thisPartOnly)

    假设我们有以下输入
  • 在 JSF 中验证字段并抛出异常,但将错误消息附加到另一个字段?

    我的页面上有一些需要交叉验证的字段 但我不希望此验证中显示错误