自定义验证器如何知道单击了哪个命令按钮
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”等验证属性。
【讨论】:
抱歉不准确:我指的是自定义验证器。我会更新我的问题的主题。以上是关于自定义验证器如何知道单击了哪个命令按钮的主要内容,如果未能解决你的问题,请参考以下文章