我想驗證一個使用Struts2驗證器工具的表單,但它似乎沒有工作,因爲顯然xml驗證器是從不確認的。Struts2驗證不起作用
這裏是我的代碼:
的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>
有人可以幫助和通知,如果有什麼錯我的代碼?
那麼,我注意到你有「輸入」結果映射全球。這可能是你問題的一部分。當驗證執行並失敗時,它將返回輸入結果。因此,如果您想在login.jsp中顯示字段錯誤,那麼您需要將輸入結果映射到該JSP以進行登錄操作。 – rees
@rees謝謝你,我做了你的建議,並且被授予,它應該保持這種狀態。但它仍然不會執行驗證,就好像即使字段錯誤也不會返回「輸入」結果。 –