Validation 避免在JPA中验证@Size注释

Validation 避免在JPA中验证@Size注释,validation,jsf,jpa,Validation,Jsf,Jpa,我有一个具有以下属性的JPA实体: public class Person implements Serializabe { ... @Basic(optional = false) @NotNull @Size(min = 1, max = 45) @Column(name = "name", nullable = false, length = 45) private String name; ... 它的观点是: <h:outputLabel value="Name: "/>

我有一个具有以下属性的JPA实体:

public class Person implements Serializabe {
...
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "name", nullable = false, length = 45)
private String name;
...
它的观点是:

<h:outputLabel value="Name: "/>           
<h:inputText id="name"
             value="#{personBean.person.name}"
             validator="#{personValidator.validate}"/>
<rich:message for="name"/>

我尝试将
NONE
添加到persistence.xml中,但没有效果。如何避免此
@Size
注释验证?

您可以通过添加
validateBean
标记来禁用特定输入的验证:

<h:outputLabel value="Name: "/>           
<h:inputText id="name"
             value="#{personBean.person.name}"
             validator="#{personValidator.validate}">
    <f:validateBean disabled="true"/>
</h:inputText>
<rich:message for="name"/>

您看到的消息是因为已发出faces消息(可能来自验证器),但可能尚未显示

在本例中,
@Size
注释来自Bean验证,由JPA和JSF处理

除非您从支持bean手动生成消息(例如,在业务逻辑周围放置try/catch),否则这条消息实际上来自JSF,禁用JPA的
persistence.xml
中的任何内容都不会有什么区别


您可以通过在输入组件中嵌套
f:validateBean
标记并将
disabled
属性设置为true来禁用JSF验证。参见

由于完整的解释,我选择了这个作为正确答案,但是@Arjan Tijms必须将
disabled
属性编辑为
true
,而不是
false
@列(nullable=false)
@NotNull
之间的冗余?
<h:outputLabel value="Name: "/>           
<h:inputText id="name"
             value="#{personBean.person.name}"
             validator="#{personValidator.validate}">
    <f:validateBean disabled="true"/>
</h:inputText>
<rich:message for="name"/>