JSF 2.0验证器包装

  • 本文关键字:包装 验证 JSF jsf
  • 更新时间 :
  • 英文 :


当我尝试将自定义验证器应用于输入字段时,我遇到了一个问题:

我想使用一个由bean生成并绑定到f:validator标签的自定义验证器:

<f:validator binding="#{bean.myValidator}">

对应的bean方法如下:

public Validator getMyValidator(){
  return new Validator(){...};
}

如果我像这样在输入标签中使用标签:

<h:input value="...">
  <f:validator binding="#{bean.myValidator}" />
</h:input>

那么一切都按预期进行。

但是,如果我以另一种方式使用标签,像这样:

<f:validator binding="#{bean.myValidator}">
  <h:input value="...">
</f:validator>

然后我得到一个ServletException ("validatorID是null")。

这个异常的原因是什么?

另外,我不理解相应的f:validator标签规范:

如果这个元素嵌套在一个有其他uiccomponent子组件的uiccomponent标签中,验证器将自动添加到所有的子组件和这个子组件中。

我猜我的f:验证器标签是嵌套在f:视图,正确吗?"对所有子组件"是什么意思?谁的子组件?

这个异常的原因是什么?

我不确定。Mojarra 2.1.3和MyFaces 2.1.1都暴露了同样的问题。当验证器是由<f:validator validatorId="myValidator">指定的一个独立的@FacesValidator("myValidator")类时,它会起作用。规范和vdl都描述了这种行为。您可能希望向JSF规范人员发布问题报告,以便在规范或vdl中更详细地说明这一点。


另外,我不理解相应的f:validator标签spec:

如果这个元素嵌套在一个有其他uiccomponent子组件的uiccomponent标签中,验证器将自动添加到所有的子组件和这个子组件中。

我猜我的f:验证器标签是嵌套在f:视图,正确吗?对所有子组件的影响是什么?的意思吗?谁的子组件?

这只是一个糟糕的措辞,无论你想要实现什么,它都支持:在一组组件上包装一个通用的验证器。您可能还想请JSF规范人员进一步澄清这一点。

相关内容

  • 没有找到相关文章

最新更新