2015-12-02 159 views
0

我搜索了很多,我沒有找到任何解決方案。我正在使用primefaces 5.2版本。這裏是我的代碼:bean驗證不起作用

<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 &amp;&amp; !args.validationFailed) PF('editPl').hide();"/> 
       <p:commandButton value="#{msg['modal.button.cancel']}" onclick="PF('editPl').hide();"/> 

      </h:form> 
    </p:dialog> 

我的類:

@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"/>但輸入仍未驗證。我不明白爲什麼。爲什麼這不起作用?

+1

http://stackoverflow.com/a/7548821/1391249 – Tiny

+0

根據你以前提出的問題,你的確在使用Tomcat。所以重複的複製肯定適用。 – BalusC

+0

我檢查了罐子,我有:** validation-api-1.1.0.Final.jar,hibernate-validator-5.1.3.Final.jar,slf4j-api-1.7.12.jar **。是的,我正在使用** tomcat7 **,並且我的項目使用** maven **進行配置。我不有** <的context-param> ​​javax.faces.VALIDATE_EMPTY_FIELDS ** web.xml和我不有**在我的xhtml中 **。我用** @ Size,@ NotNull,@ NotEmpty,@ NotBlank **嘗試過,它們都沒有工作。仍然沒有顯示錯誤信息。任何想法我能做什麼? – FAndrew

回答

0

我發現我的解決方案,我認爲它不是重複的。我做出的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 版本的變化,現在它`工作豆驗證。我認爲這可能是2.2.42.2.3版本中的一個bug。

+2

這確實是已知的。但是,你爲什麼要降級而不是升級? – BalusC

+0

正確我現在使用2.2.12,它工作正常。 – FAndrew