0

我正在尝试在应用程序登录期间验证用户凭据详细信息。我已经更改了我的 struts 配置和验证 xml,但验证在页面加载本身上被调用。我希望仅在单击按钮(提交按钮)期间调用此验证。我的 struts 配置如下:

<action-mappings>

    <action attribute="loginForm" input="jsp/LoginPage.jsp" name="loginForm"
        parameter="method" path="/loginAction" scope="request"
        type="com.pcs.bpems.portal.struts.action.LoginAction" validate="false">
        <forward name="schoolloginpage" path="/jsp/SchoolLoginPage.jsp" />

    </action>

    <action attribute="loginForm" input="/jsp/SchoolLoginPage.jsp" name="loginForm"
        parameter="method" path="/loginAction" scope="request"
        type="com.pcs.bpems.portal.struts.action.LoginAction" validate="true">
        <forward name="schoolloginpage" path="/jsp/SchoolLoginPage.jsp" />
        <forward name="schoolhomepage" path="/ownerHome.do?method=showHome" />
    </action>

我的验证 xml 如下

<form name="loginForm">
   <field property="userId" depends="required,minlength">
    <arg0 key="label.userName"/>        
     <var>
         <var-name>minlength</var-name> 
        <var-value>6</var-value> 
     </var>
      <arg1 key="${var:minlength}"  resource="false" />
  </field>
  <field property="password" depends="required,minlength">
    <arg0 key="label.password"/>        
     <var>
        <var-name>minlength</var-name> 
        <var-value>6</var-value> 
     </var>
      <arg1 key="${var:minlength}"  resource="false" />
 </field>
</form>       
4

2 回答 2

1

@Anish 试试这个代码而不是你的第一个 LoginAction 属性,

<action path="/loginAction" parameter="method" 
    type="com.pcs.bpems.portal.struts.action.LoginAction" validate="false">
 <forward name="schoolloginpage" path="/jsp/SchoolLoginPage.jsp" />
</action>

我的想法是表单名称不是加载表单所必需的,尽管您将 validate 属性设置为 false。让我知道这是否有帮助。

于 2013-10-12T19:07:29.597 回答
0

如果没有通过input,Struts 会执行验证。有几种方法可以解决它。

直接向 JSP 请求

直接向 JSP 文件发出请求,而不是通过org.apache.struts.action.ActionServlet.

http://localhost:8080/MyContext/jsp/SchoolLoginPage.jsp

带一个forward

<action path="/login" forward="/jsp/SchoolLoginPage.jsp" /> 

利用:

http://localhost:8080/MyContext/login.do
于 2013-10-16T03:27:35.123 回答