我正在尝试使用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>
的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登录-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>
如果我的代码有问题,有人可以帮忙并注意吗?
答案 0 :(得分:0)
我认为问题出在xml验证器的名称中。您必须使用login-validation.xml
重命名验证程序。您可以为xml验证程序文件添加的名称是:
可以指定验证规则:
每个Action类:在名为ActionName-validation.xml
的文件中 名为ActionName-alias-validation.xml的文件中的每个操作别名:
Action类实现的继承层次结构和接口: XWork搜索操作的继承树,以查找Action和实现的接口的父类的默认验证
你可以在这里看到更多: http://struts.apache.org/2.0.12/docs/validation.html#Validation-DefiningValidationRules
P.D:你说“”输入“结果永远不会返回,即使字段错误”。如果有任何字段错误,则返回输入结果(除非您指定其他内容)。