如果我嘗試使用不正確的值保存對象,這意味着當我執行Session.save
或EntityManager.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>
是的,我明白了,但只要我擔心,與數據庫列和bean驗證沒有關係,因爲它只驗證java端的屬性。 關於.JAR的,這是一個簡單的動態Web應用程序,我不想在它上使用Maven,並且在任何情況下都不會有問題,看到我有另一個類似這樣的應用程序和bean驗證作品... –
您是否在您的bean上設置了@Entity註釋? 你的應用程序是hibernate startet嗎? –
而你在正確的地方,註釋不需要匹配行配置。我檢查了回來。 –