JSF Bean验证不起作用



如果我试图用不正确的值保存对象,我会让bean验证工作,这意味着当我执行Session.saveEntityManager.persist时会抛出异常,但当我提交表单时,自动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>

我想问这个问题作为评论,但我的声誉太低了,所以我在这里问。

你能通过应用程序将内容写入数据库吗?数据库中的列是否与实体文件注释相同?

在使用"Dependencies"文件夹之前,我从未在WEB-INF/lib中看到过.jar文件。要将某物添加到此文件夹,请右键单击文件夹Dependencies->add Dependency,如果您直接使用maven项目,则可以将所有依赖项放在pom文件中,maven将为您完成其余工作。maven的依赖性在Goolge上很容易找到,只需搜索"hibernate依赖性"即可。如果你使用一个maven项目,你就再也不会关心.jar文件了。只要为你喜欢使用的任何东西添加依赖项,maven就会下载所有内容,并将其放在项目中可用的正确位置。您唯一需要做的就是在编写代码后修复导入,确保包可用于您的类。我希望这或多或少是可以理解的?

相关内容

  • 没有找到相关文章

最新更新