有条件地跳过验证 JSF

2023-11-29

要求是有条件地跳过字段验证。当用户选择添加时,应验证表单字段并将值添加到表中。 如果单击编辑,则应跳过表单字段验证,但应将 bean 值复制到输入字段。

<composite:nameInput id="name" value="#{buyer.name}" 
  disableBeanValidation ="#{param['skipBeanValidation']}"/>
<h:commandLink action="#{buyerBacking.cancelEdit}" value="cancel"/>

 <h:dataTable value="#{bean.list}">
    <h:commandLink value="Edit" action="#{buyerBacking.edit}">
     <f:param name="skipBeanValidation" value="true" /> 
    </h:commandLink>
 </h:dataTable>

   <h:commandLink id="add" action="#{buyerBacking.add}"/>

名称 输入复合组件

<h:inputText id="fName" value="#{bean.fname}">
     <f:validateBean disabled="#{cc.attrs. disableBeanValidation}"/>
</h:inputText>

如果用户输入详细信息并选择添加,详细信息将添加到表中。 如果验证错误,我们会显示错误消息。

然后用户选择编辑,值将复制到输入字段。 用户选择取消编辑,值将从输入字段中删除。 如果用户再次选择编辑,我们会收到索引越界异常错误。 name_firstName 的索引越界异常。

但如果用户选择添加并选择取消编辑,则不会发生这种情况。 这是否与传递的视图参数(不知何故为空)有关?

javax.faces.FacesException:恢复 ID 为 frmAddAuthBuyerBR_inpAuthBuyerBRName_prefix_input 的组件状态时出现意外错误。原因:java.lang.IndexOutOfBoundsException:索引:0,大小:0。 在 com.sun.faces.application.view.StateManagementStrategyImpl$2.visit(StateManagementStrategyImpl.java:272) 在com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1612) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UINamingContainer.visitTree(UINamingContainer.java:163) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UINamingContainer.visitTree(UINamingContainer.java:163) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626) 在 javax.faces.component.UIForm.visitTree(UIForm.java:371) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1626)


您的代码不完整,因为您无处展示如何disableBeanValidation是如何实施的以及你如何通过#{param[skipBeanValidation]} around.

但应该基本上归结为:

<f:validateBean disabled="#{param.skipBeanValidation}" />

...

<h:commandLink value="Edit" action="#{buyerBacking.edit}"/>
    <f:param name="skipBeanValidation" value="true" />
</h:commandLink>

请注意#{param.skipBeanValidation}#{param[skipBeanValidation]}(但与#{param['skipBeanValidation']})。另请注意,跳过 bean 验证所需的请求参数作为 HTTP 请求参数传递,与预期的完全一样#{param}.

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

有条件地跳过验证 JSF 的相关文章

随机推荐

  • 在图例ggplot中显示填充箭头

    我正在尝试绘制一条末端带有箭头的线段 并使其出现在图例中 我可以使用以下代码来做到这一点 library ggplot2 sample data dat lt data frame x as factor 1 10 y c 20 30 13
  • .net core 2.2 和 3.1 应用程序插槽可以在同一个应用程序服务中共存吗?

    目前 我们在 azure 应用程序服务中有两个插槽 暂存和生产 我们刚刚将 net core 2 2 迁移到 3 1 并在单独的开发应用服务中对其进行了测试 我们即将将 3 1 应用程序发布到暂存阶段 有谁知道让一个插槽运行 2 2 而另一
  • 如何在控制器的操作中显示模式窗口?

    所以我有控制器 PagesController 与操作索引和 full search 操作索引用于主页 在主页上 我有按钮 搜索 和文本字段 如果用户在文本字段中输入某些内容并单击 搜索 按钮 他 她将执行 full search 操作 在
  • Nodejs:从视频缓冲区(不是文件路径)生成缩略图

    我有一个 Node API 它接受通过客户端 FormData 上传的视频文件 结果是req file object fieldname media originalname IMG 6288 MOV encoding 7bit mimet
  • Spring Security登录成功后重定向到上一页

    我知道这个问题之前已经被问过 但是我在这里面临一个特定的问题 我使用弹簧安全3 1 3 我的 Web 应用程序中有 3 种可能的登录情况 通过登录页面登录 好的 通过受限页面登录 也可以 通过非限制页面登录 不行 每个人都可以访问 产品 页
  • ASP.NET WEBAPI 文件上传,IE9 问题

    我使用 ASP NET WEBAPI 创建了一个文件上传方法 代码如下 DataContract public class FileDesc DataMember public string name get set DataMember
  • Fullcalendar 为每一天添加自定义按钮

    如何在 fullCalendar 中为每一天添加自定义按钮 为此 您最好的解决方案可能是日渲染回调允许您在日历上绘制每天的单元格之前添加额外的 HTML 例如这是一个超级简单的例子 dayRender function info info
  • JSF 验证。这可以简化吗?

    我有一个带有一堆字段的简单表单 它们每个都是必需的 并且每个都有不同的名称 city state 提交表单时 我检查每个字段是否为空并添加一个独特的信息对于上下文的每次验证 例如 城市为必填项 状态为必填项 我不能简单地在 jsp 上使用
  • 我们如何在GCP Composer环境(1.10.6)中使用SFTPToGCSOperator?

    这里我想在GCP的composer环境 1 10 6 中使用SFTPToGCSOperator 我知道存在限制 因为操作符仅出现在最新版本的气流中 而不出现在 Composer 最新版本 1 10 6 中 请参阅参考资料 https air
  • Notepad++ - 正则表达式:替换每行中第一次出现的字符组

    有人会知道可以使用正则表达式 在记事本 中 来替换每行中第一次出现的字符组 eg abcdefg ijkl m qsdflkj sdqlmkf jqsmdl to abcdefg ijkl m qsdflkj sdqlmkf jqsmdl
  • 调试发送程序指令时“事务模拟失败”(Solana Solidity)

    当尝试调用编译的程序时 solana solidity 我收到以下错误 Transaction simulation failed Error processing Instruction 0 Program failed to compl
  • 无法正确更新 DirectionalLight 阴影

    我有一个DirectionalLight在我的场景中 当我第一次创建灯光时 阴影覆盖了预期的区域 当调整视口大小 画布大小 时 我更新shadowCamera参数 右 左 上 下 以及灯光的位置和目标 但阴影仅覆盖更新前的区域 我必须设置什
  • 我如何获得特定类的 td nodeValue ?

    我有以下 html 表 table tr td img src name0 gif alt Name0 td td src name1 gif alt Name1 td td src name2 gif alt Name2 td td sr
  • 以编程方式创建属性 - 核心数据

    我有一个简单的 iphone 项目 其中包含一个简单的 xcdatamodel 它有一个实体 大约有3个属性 我想知道是否有一种方法可以以编程方式向实体添加属性 即 如果用户按下某种 添加 按钮 则会将一个简单的字符串属性添加到实体并保存
  • C# 操作/函数列表

    我有一个程序必须根据枚举执行一个函数 我想知道是否还有其他方法 enum FunctionType Addition 0 Substraction 1 Mutiplication 2 Division 3 void ExecuteFunct
  • Python 3.x 在矩阵中查找鞍点

    这是我的matrix 1 1 2 5 6 1 5 6 8 5 6 7 10 12 10 12 11 11 8 10 5 6 8 9 6 5 10 12 15 19 我想找到它鞍点 坐标 of 鞍点应该 2 0 2 2 0 4 所以我的问题是
  • 如何覆盖 NSTableHeaderView 的布局?

    我正在尝试为我的 NSTableView 生成自定义标头 我想更改标题文本的字体并删除边框和垂直分隔符 我当前的顶部和底部标题如下所示 有谁知道我该怎么做 更新 应用修复后 标题现在看起来像我想要的那样 实际上 mprudhom 和 Pro
  • 如何在重命名某些表/列的同时导入 mysql 转储而不导入其他表/列?

    我正在将遗留数据库导入到我们程序的新版本中 我想知道是否有一种方法可以不从转储中导入某些列 表 并在导入时重命名其他表 列 我知道理论上我可以编辑转储文件 但这似乎是一种黑客行为 到目前为止 我的编辑器都无法打开 1 3 GB 文件 是的
  • 保持方向变化时的项目选择

    我正在尝试恢复方向改变时动作模式的状态 但它不能正常工作 按照以下步骤顺序 在 3 和 4 中 选择已损坏 长按项目 项目突出显示 上下文操作栏显示标题显示 1 selected 看起来不错 将手机转为横向 没有变化 看起来不错 将手机转回
  • 有条件地跳过验证 JSF

    要求是有条件地跳过字段验证 当用户选择添加时 应验证表单字段并将值添加到表中 如果单击编辑 则应跳过表单字段验证 但应将 bean 值复制到输入字段