Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 JSF2.0:JSR-303bean验证的存在对自定义JSF验证器有影响吗?_Jsf 2_Bean Validation_Myfaces_Hibernate Validator - Fatal编程技术网

Jsf 2 JSF2.0:JSR-303bean验证的存在对自定义JSF验证器有影响吗?

Jsf 2 JSF2.0:JSR-303bean验证的存在对自定义JSF验证器有影响吗?,jsf-2,bean-validation,myfaces,hibernate-validator,Jsf 2,Bean Validation,Myfaces,Hibernate Validator,我现在负责一个JSF2.0应用程序,其中所有内容都通过自定义验证器进行验证,从而彻底破坏了*.xhtml文件。我尝试将验证迁移到JSR-303bean验证,效果很好 由于JSR-303不验证类级别的约束,所以我不想保留一个自定义验证器来验证一个请求表单至少填充了on字段 验证器注册到每个字段,并获得一个包含其他字段名称的字符串数组,它必须检查输入。问题是,当类路径上出现JSR-303 ist时,自定义验证器的属性没有设置,然后它就不知道其他字段的名称。验证器仍会被触发,但最终会显示一条消息,表示

我现在负责一个JSF2.0应用程序,其中所有内容都通过自定义验证器进行验证,从而彻底破坏了*.xhtml文件。我尝试将验证迁移到JSR-303bean验证,效果很好

由于JSR-303不验证类级别的约束,所以我不想保留一个自定义验证器来验证一个请求表单至少填充了on字段

验证器注册到每个字段,并获得一个包含其他字段名称的字符串数组,它必须检查输入。问题是,当类路径上出现JSR-303 ist时,自定义验证器的属性没有设置,然后它就不知道其他字段的名称。验证器仍会被触发,但最终会显示一条消息,表示尚未提供任何输入

我已经查看了日志文件输出,但唯一的区别是

11:22:50,403 INFO  [Version] Hibernate Validator 4.2.0.Final
11:22:50,450 INFO  [ExternalSpecifications] MyFaces Bean Validation support enabled
而不是

11:02:10,472 INFO  [ExternalSpecifications] MyFaces Bean Validation support disabled
另一个区别是,当JSR-303出现时,第一次触发验证时,会出现以下输出:

11:23:09,906 INFO  [_ExternalSpecifications] MyFaces Unified EL support disabled
11:23:09,906 INFO  [_ExternalSpecifications] MyFaces Bean Validation support enabled
我在JBoss 5.1 jdk6上使用MyFaces2.0、Hibernate Validator 4.2

更新

<cc:formular bean="#{bankenBean}">
        <h:outputLabel for="bankleitzahl">
            <span class="kurztaste">B</span>ankleitzahl:</h:outputLabel>
        <h:inputText id="bankleitzahl" accesskey="b" size="10" maxlength="8"
            value="#{bankenBean.bankleitzahl}">
            <audi:notEmptyValidator dependsOn="bic name ort"
                detail="Eines dieser Felder muss gefüllt sein." />
        </h:inputText>
        <h:message for="bankleitzahl" errorClass="fehlertext" />
        <h:outputLabel for="bic">B<span class="kurztaste">I</span>C:</h:outputLabel>
        <h:inputText id="bic" accesskey="i" size="12" maxlength="11"
            value="#{bankenBean.bic}">
            <audi:notEmptyValidator dependsOn="bankleitzahl name ort"
                detail="Eines dieser Felder muss gefüllt sein." />
        </h:inputText>
        <h:message for="bic" errorClass="fehlertext" />
        <h:outputLabel for="name">
            <span class="kurztaste">N</span>ame der Bank:</h:outputLabel>
        <h:inputText id="name" accesskey="n" size="35" maxlength="58"
            value="#{bankenBean.name}">
            <audi:notEmptyValidator dependsOn="bankleitzahl bic ort"
                detail="Eines dieser Felder muss gefüllt sein." />
        </h:inputText>
        <h:message for="name" errorClass="fehlertext" />
        <h:outputLabel for="ort">
            <span class="kurztaste">O</span>rt der Bank:</h:outputLabel>
        <h:inputText id="ort" accesskey="o" size="35" maxlength="35"
            value="#{bankenBean.ort}">
            <audi:notEmptyValidator dependsOn="bankleitzahl bic name"
                detail="Eines dieser Felder muss gefüllt sein." />
        </h:inputText>
        <h:message for="ort" errorClass="fehlertext" />
    </cc:formular>

班克莱扎尔:
BIC:
银行名称:
奥德银行:
这就是使用notEmptyValidator的点。它在facelets.taglib.xml中定义:

<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd">

<namespace>http://rzf.finnrw.de/audi</namespace>
<tag>
    <tag-name>notEmptyValidator</tag-name>
    <validator>
        <validator-id>de.finnrw.rzf.audi.NotEmptyValidator</validator-id>
    </validator>
    <attribute>
        <name>dependsOn</name>
        <type>java.lang.String</type>
    </attribute>
    <attribute>
        <name>detail</name>
        <type>java.lang.String</type>
    </attribute>
</tag>

http://rzf.finnrw.de/audi
notEmptyValidator
de.finnrw.rzf.audi.NotEmptyValidator
德彭森
java.lang.String
细节
java.lang.String


当类路径上存在JSR-303时,这个自定义验证器仍然会被注册并触发。但是它没有设置属性,因此不知道需要检查的字段。

\u Converter和Validator实际上是两个不同的东西。您能通过添加一些代码来澄清吗,例如转换器代码以及jsp代码。Argh。。。愚蠢的手指。我写了自定义转换器,但我指的是自定义验证器。我会更新我的帖子并提供代码。