Anish
Anish

Reputation: 255

Validating a form on a button click in struts 1.2

I am trying to validate user credentials details during application log in.I have changed my struts config and validation xml but the validation gets invoked on the page load itself. I want that this validation should be invoked only during the click of a button(submit button). My struts config is as under:

<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>

My validation xml is as under

<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>       

Upvotes: 0

Views: 855

Answers (2)

Paul Vargas
Paul Vargas

Reputation: 42020

If you do not pass through the input, Struts performs the validation. There are several ways to solve it.

Request directly to the JSP

Make a request to the JSP file directly and not through the org.apache.struts.action.ActionServlet.

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

With a forward

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

Use:

http://localhost:8080/MyContext/login.do

Upvotes: 0

Vinoth Krishnan
Vinoth Krishnan

Reputation: 2949

@Anish Try this code instead of your first LoginAction attribute,

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

My thought is form name is not necessary for load the form, though you are made validate attribute to false. Let me know if this helps.

Upvotes: 1

Related Questions