Nar*_*ddi 5 jsf composite-component jsf-2
如果我faces-config.xml
使用JSF 2.0.4,我应该注册自定义验证器吗?我的自定义验证器使用Validator接口javax.faces.validator.Validator
.
<cc:myComp id="customcomp1" ... />
<cc:myComp id="customcomp2" ...>
<f:validator id="myvalidator" for="myComp" />
</cc:myComp>
Run Code Online (Sandbox Code Playgroud)
myComp.xhtml
<cc:interface>
<cc:attribute ... />
<!-- more attributes -->
</cc:interface>
<cc:implementation>
<h:panelGroup layout="block">
<h:inputText id="firstName" ... />
<h:inputText id="middleName" ... />
<h:inputText id="lastName" ... />
</h:panelGroup>
</cc:implementation>
Run Code Online (Sandbox Code Playgroud)
根据更新后的问题中的代码示例,您似乎根本没有将验证器委派给正确的输入,因此完全忽略验证器.
您需要定义所需的输入(您想附加验证)作为<composite:editableValueHolder>
在<composite:interface>
.
<cc:interface>
<cc:editableValueHolder name="forName" targets="inputId" />
...
</cc:interface>
<cc:implementation>
...
<h:inputText id="inputId" ... />
...
</cc:implementation>
Run Code Online (Sandbox Code Playgroud)
以上<composite:editableValueHolder>
基本上告诉任何<f:validator for="forName">
必须应用于<h:inputText id="inputId">
.那么,以下应该这样做:
<cc:myComp>
<f:validator id="myValidator" for="forName" />
</cc:myComp>
Run Code Online (Sandbox Code Playgroud)
你甚至可以在name
和中使用相同的值targets
,但关键点是必须有一个<composite:editableValueHolder>
存在,以便JSF知道确切的验证器应该针对哪个输入组件,复合中可以有多个输入组件,你看到.
归档时间: |
|
查看次数: |
4698 次 |
最近记录: |