bean 验证不工作
bean validation not working
我搜索了很多,但没有找到任何解决方案。我正在使用 primefaces 5.2 版本。这是我的代码:
<p:dialog header="#{msg['table.playlist.edit.caption']}" widgetVar="editPl" id="editPl" appendTo="@(body)" modal="true" minHeight="100">
<h:form id="editForm">
<h:panelGrid id="editPanel" columns="3" cellpadding="5">
<h:outputText for="fieldName" value="#{msg['table.playlist.column.header.name']}" />
<p:inputText id="fieldName" value="#{playlistModel.playlist.plName}" label="FieldName"/>
<p:message for="fieldName" style="color:red" />
<h:outputText value="#{msg['table.playlist.column.header.default']}" />
<h:selectBooleanCheckbox value="#{playlistModel.playlist.defaultPl}"/>
</h:panelGrid>
<p:commandButton value="#{msg['modal.button.save']}" ajax="true" validateClient="true" update=":editForm" action="#{playlistModel.addPlaylist}" oncomplete="if (args && !args.validationFailed) PF('editPl').hide();"/>
<p:commandButton value="#{msg['modal.button.cancel']}" onclick="PF('editPl').hide();"/>
</h:form>
</p:dialog>
我的class:
@ManagedBean(name="playlistModel")
@ViewScoped
public class PlaylistModel extends BaseModel implements Serializable{
private E_CMS_PL playlist;
.
.
.
}
我的豆子:
import javax.validation.constraints.Size;
@Entity
@Table(name="E_CMS_PL")
public class E_CMS_PL extends BaseEntity {
/** Name of the playlist */
@Column(name = "PL_NAME", unique=true ,length=64)
@Size(min=2,max=5)
private String plName;
.
.
.
}
当我点击保存时,它只是进入 addPlaylist 方法,我也尝试用这样一个简单的按钮来测试它:<p:commandButton value="test" ajax="false" validateClient="true"/>
但输入仍然没有被验证。我不明白为什么。为什么这不起作用?
我找到了我的解决方案,我认为它不是重复的。我在 pom.xml
中进行了更改
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
</dependency>
从版本 2.2.4 到 2.2.2 版本,现在它正在进行 bean 验证。我认为这可能是 2.2.4 和 2.2.3 版本中的错误。
我搜索了很多,但没有找到任何解决方案。我正在使用 primefaces 5.2 版本。这是我的代码:
<p:dialog header="#{msg['table.playlist.edit.caption']}" widgetVar="editPl" id="editPl" appendTo="@(body)" modal="true" minHeight="100">
<h:form id="editForm">
<h:panelGrid id="editPanel" columns="3" cellpadding="5">
<h:outputText for="fieldName" value="#{msg['table.playlist.column.header.name']}" />
<p:inputText id="fieldName" value="#{playlistModel.playlist.plName}" label="FieldName"/>
<p:message for="fieldName" style="color:red" />
<h:outputText value="#{msg['table.playlist.column.header.default']}" />
<h:selectBooleanCheckbox value="#{playlistModel.playlist.defaultPl}"/>
</h:panelGrid>
<p:commandButton value="#{msg['modal.button.save']}" ajax="true" validateClient="true" update=":editForm" action="#{playlistModel.addPlaylist}" oncomplete="if (args && !args.validationFailed) PF('editPl').hide();"/>
<p:commandButton value="#{msg['modal.button.cancel']}" onclick="PF('editPl').hide();"/>
</h:form>
</p:dialog>
我的class:
@ManagedBean(name="playlistModel")
@ViewScoped
public class PlaylistModel extends BaseModel implements Serializable{
private E_CMS_PL playlist;
.
.
.
}
我的豆子:
import javax.validation.constraints.Size;
@Entity
@Table(name="E_CMS_PL")
public class E_CMS_PL extends BaseEntity {
/** Name of the playlist */
@Column(name = "PL_NAME", unique=true ,length=64)
@Size(min=2,max=5)
private String plName;
.
.
.
}
当我点击保存时,它只是进入 addPlaylist 方法,我也尝试用这样一个简单的按钮来测试它:<p:commandButton value="test" ajax="false" validateClient="true"/>
但输入仍然没有被验证。我不明白为什么。为什么这不起作用?
我找到了我的解决方案,我认为它不是重复的。我在 pom.xml
中进行了更改<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
</dependency>
从版本 2.2.4 到 2.2.2 版本,现在它正在进行 bean 验证。我认为这可能是 2.2.4 和 2.2.3 版本中的错误。