2014-04-15 82 views
0

如果我嘗試使用不正確的值保存對象,這意味着當我執行Session.saveEntityManager.persist時拋出異常,但我提交時自動bean驗證不起作用在存在形式,是與像的註解,一些領域:JSF Bean驗證不起作用

@NotEmpty 
@NotNull 
@Size 
etc 

我已經加入由Hibernate驗證所有必需的.jar文件到我的WEB-INF/lib下,但它並沒有工作。

你應該做什麼特別的事嗎?

--------- ----------編輯 這是我的頁面(這是模板)的代碼

<body> 
    <p:growl id="growl" showDetail="true" autoUpdate="true"/> 
    <h:form id="formPrincipalTemplate"> 
     <p:ajaxStatus style="width:40px;height:40px;position:fixed;right:5px;bottom:18px"> 
      <f:facet name="start"> 
       <p:graphicImage library="bmp" name="gifCarregando.gif" /> 
      </f:facet> 

      <f:facet name="complete"> 
       <h:outputText value="" /> 
      </f:facet> 
     </p:ajaxStatus> 

     <ui:insert name="conteudo"> 
      <!-- Aqui vai o conteúdo da página! --> 
     </ui:insert> 

    </h:form> 
</body> 

這裏是頁本身(應該執行驗證的按鈕是一個其上的值字「Gravar」:

<ui:composition template="../template/adminTemplate.xhtml"> 
    <ui:define name="conteudo"> 

     <h:panelGroup id="atualiza"> 
      <div class="btnComandos"> 
       <p:commandButton value="Novo" actionListener="#{mbAdmin.novo}" disabled="#{!mbAdmin.notModoEdicao}" update=":formPrincipalTemplate:atualiza"/> 
       <p:commandButton value="Alterar" actionListener="#{mbAdmin.alterar}" disabled="#{!mbAdmin.notModoEdicao}" update=":formPrincipalTemplate:atualiza"/> 
       <p:commandButton value="Gravar" actionListener="#{mbAdmin.gravar}" disabled="#{mbAdmin.notModoEdicao}" update=":formPrincipalTemplate:atualiza"/> 
       <p:commandButton value="Excluir" actionListener="#{mbAdmin.excluir}" disabled="#{!mbAdmin.notModoEdicao}" update=":formPrincipalTemplate:atualiza" onclick="return confirm('Deseja realmente excluir?');"/> 
       <p:commandButton value="Cancelar" actionListener="#{mbAdmin.cancelar}" disabled="#{mbAdmin.notModoEdicao}" update=":formPrincipalTemplate:atualiza"/> 
      </div> 
      <br/> 
      <p:tabView id="tabView" orientation="left" style="width:80%;margin:auto;" activeIndex="#{mbAdmin.aba}"> 

       <p:tab title="Consulta"> 
        <p:dataTable id="admins" var="adm" value="#{mbAdmin.admins}" rowKey="#{adm.adminCodigo}" 
          selection="#{mbAdmin.admin}" selectionMode="single"> 

         <p:ajax update=":formPrincipalTemplate:atualiza" event="rowSelect" listener="#{mbAdmin.mudarAba}"/> 

         <p:column width="80"> 
          <f:facet name="header"> 
           <h:outputText value="Código" /> 
          </f:facet> 
          <h:outputText value="#{adm.adminCodigo}" /> 
         </p:column> 
         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Nome" /> 
          </f:facet> 
          <h:outputText value="#{adm.adminNome}" /> 
         </p:column> 
         <p:column> 
          <f:facet name="header"> 
           <h:outputText value="Email" /> 
          </f:facet> 
          <h:outputText value="#{adm.adminEmail}" /> 
         </p:column> 

        </p:dataTable> 
       </p:tab> 

       <p:tab title="Cadastro" id="formulario"> 
        <h:panelGrid columns="2"> 
         <h:outputText value="Código:"/> 
         <h:outputText value="Nome:"/> 

         <p:inputText value="#{mbAdmin.admin.adminCodigo}" disabled="true"/> 
         <p:inputText value="#{mbAdmin.admin.adminNome}" disabled="#{mbAdmin.notModoEdicao}"/> 
        </h:panelGrid> 
        <h:panelGrid columns="2"> 
         <h:outputText value="Email:"/> 
         <h:outputText value="Senha:"/> 

         <p:inputText value="#{mbAdmin.admin.adminEmail}" disabled="#{mbAdmin.notModoEdicao}"/> 
         <p:inputText value="#{mbAdmin.admin.adminSenha}" disabled="#{mbAdmin.notModoEdicao}"/> 
        </h:panelGrid> 
       </p:tab> 

      </p:tabView> 
     </h:panelGroup> 
    </ui:define> 
</ui:composition> 

回答

1

我想問一下這是一個評論,但我的名聲是低,對於這個原因,我問

Ca你是否在應用程序中將數據寫入數據庫?數據庫的列是否與您的實體文件相同?

我從來沒有在WEB-INF/lib中看到過.jar文件,因此我使用「Dependencies」文件夾。添加某物到這個文件夾,你點擊文件夾Dependencies - > Add Dependency,更好地直接使用Maven項目,你可以把所有的依賴關係放到一個pom文件中,maven將爲你完成剩下的工作。 maven的依賴關係可以輕鬆找到Goolge,只需搜索「hibernate dependency」即可。如果你使用Maven項目,你再也不會關心.jar文件。只需添加您喜歡的任何依賴項,Maven就會下載所有內容並將其放置在項目可用的正確位置。您需要做的唯一事情就是在編寫代碼之後修復您的導入,以確保您的課程可以使用這些包。我希望這或多或少是可以理解的?

+0

是的,我明白了,但只要我擔心,與數據庫列和bean驗證沒有關係,因爲它只驗證java端的屬性。 關於.JAR的,這是一個簡單的動態Web應用程序,我不想在它上使用Maven,並且在任何情況下都不會有問題,看到我有另一個類似這樣的應用程序和bean驗證作品... –

+0

您是否在您的bean上設置了@Entity註釋? 你的應用程序是hibernate startet嗎? –

+0

而你在正確的地方,註釋不需要匹配行配置。我檢查了回來。 –