Struts2验证不';行不通

Struts2验证不';行不通,struts2,Struts2,我试图使用Struts2验证器工具验证表单,但它似乎不起作用,因为显然,xml验证器从未得到确认 这是我的密码: struts.xml: <interceptors> <interceptor name="login_interceptor" class="org.apache.struts.gesprod.produccion.BLLogin"> </interceptor> <interceptor-stack name="l

我试图使用Struts2验证器工具验证表单,但它似乎不起作用,因为显然,xml验证器从未得到确认

这是我的密码:

struts.xml:

<interceptors>
    <interceptor name="login_interceptor" class="org.apache.struts.gesprod.produccion.BLLogin">
    </interceptor>
    <interceptor-stack name="login_stack">
        <interceptor-ref name="login_interceptor" />
        <interceptor-ref name="defaultStack" />
    </interceptor-stack>
</interceptors>

<default-interceptor-ref name="login_stack"></default-interceptor-ref>

<global-results>
    <result name="input">/errores/error_input.jsp</result>
    <result name="error_sql">/errores/error_sql.jsp</result>
    <result name="no_logged">/login.jsp</result>
</global-results>
...
<action name="login" class="org.apache.struts.gesprod.produccion.BLUsuario" method="loginUsuario">
    <result name="success" type="redirect">/welcome.jsp</result>
    <result name="incorrecto_login">/login.jsp</result>
    <result name="input">/login.jsp</result>
</action>

/errors/error\u input.jsp
/错误/error\u sql.jsp
/login.jsp
...
/welcome.jsp
/login.jsp
/login.jsp
login.jsp:

<div id="login">
    <s:fielderror />
    <s:form id="login_form" action="login" validate="true">
        <s:hidden name="intento_log" value="true" />
        <s:textfield name="usuario.username_usuario" label="Usuario"/>
        <s:password name="usuario.password_usuario" label="Password"/>
        <s:submit value="Ingresar"/>
    </s:form>
</div>

和xml验证器,与Action类放在同一个包中

BLUsuario-login-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
    "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="usuario.username_usuario">
        <field-validator type="requiredstring">
            <message>Show error!</message>
        </field-validator>
    </field>
</validators>

显示错误!

如果我的代码有问题,有人能帮我一下并注意一下吗?

我认为问题出在xml验证器的名称上。您必须使用
login validation.xml
重命名验证器。可以放入xml验证程序文件的名称为:

可以指定验证规则:

每个动作类:在名为ActionName-validation.xml的文件中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
    "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="usuario.username_usuario">
        <field-validator type="requiredstring">
            <message>Show error!</message>
        </field-validator>
    </field>
</validators>
每个操作别名:位于名为ActionName-alias-validation.xml的文件中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
    "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="usuario.username_usuario">
        <field-validator type="requiredstring">
            <message>Show error!</message>
        </field-validator>
    </field>
</validators>
继承层次结构和Action类实现的接口:XWork搜索Action的继承树,以查找Action的父类和实现的接口的默认验证

您可以在此处看到更多信息:


p.D:您说过“即使字段错误,“输入”结果也不会返回”。如果存在任何字段错误(除非您指定其他内容),则返回输入结果。

首先,我注意到您将“输入”结果全局映射。这可能是你问题的一部分。当验证执行失败时,它将返回输入结果。因此,如果您想在login.jsp中显示字段错误,那么您需要将输入结果映射到该jsp以进行登录操作。@rees谢谢,我按照您的建议做了,当然,应该这样做。但它仍然不执行验证,就好像即使字段错误,也不会返回“输入”结果。我的意思是,如果字段与我在自定义验证中指定的内容不符,则不会返回输入结果。例如,如果我把一个字符串放在一个int的预期位置,结果当然是“Input”。非常感谢您的帮助,但这也不起作用。有什么方法可以调试验证拦截器吗?我不知道。你能用现在的内容编辑你的问题吗?你用的是简单的主题吗?如果在jsp中放置
标记,是否会出现任何错误?你申报过拦截器吗?申报完毕。我使用的是Struts2提供的默认主题。表单是在“wwFormTable”类div中呈现的。至于,它之所以能够工作,是因为它正在加载它应该加载的脚本。我还将把我的拦截器堆栈添加到问题中。如果删除客户端上的验证,jsp中是否会显示字段错误?注意:
全局结果中的这一行没有意义:
/errors/error\u input.jsp