自定义验证器如何知道单击了哪个命令按钮

Posted

技术标签:

【中文标题】自定义验证器如何知道单击了哪个命令按钮【英文标题】:How can a custom-validator know which commandButton was clicked 【发布时间】:2012-05-12 19:43:13 【问题描述】:

我的表单有几个“提交”按钮, 并且某些字段的验证取决于按下了哪个字段。 如何在我的自定义验证器中找到它?

【问题讨论】:

你使用的是aspx还是php html 【参考方案1】:

按钮的客户端 ID 也生成为 name<input type="submit">。按下的<input type="submit">name=value 也作为请求参数发送。所以你可以在请求参数映射中检查。

例如

<h:form id="formId">
    ...
    <h:commandButton id="button1" ... />
    <h:commandButton id="button2" ... />
</h:form>

validate() 实现中使用以下内容:

Map<String, String> params = context.getExternalContext().getRequestParameterMap();

if (params.containsKey("formId:button1")) 
    // Button 1 is pressed.

else if (params.containsKey("formId:button2")) 
    // Button 2 is pressed.

【讨论】:

【参考方案2】:

对于 JSF,将有内置的验证消息,这些消息将在错误期间显示。或者您可以在它们各自的标签中的 primefaces 中使用“validator & validatorMessages”等验证属性。

【讨论】:

抱歉不准确:我指的是自定义验证器。我会更新我的问题的主题。

以上是关于自定义验证器如何知道单击了哪个命令按钮的主要内容,如果未能解决你的问题,请参考以下文章

自定义单元格中的多个按钮。单击了哪一行中的哪个按钮?

Acumatica:触发器在另一个自定义按钮上保存验证

jQuery验证两个提交按钮

如何验证magento中的单选按钮?

Angular 反应式表单自定义验证器。仅在选中复选框时启用验证

带有 UIButton 的自定义 UITableViewCell:单击了哪个按钮?