jcrshankar
jcrshankar

Reputation: 1196

how to redirect to struts action from java script in struts 2?

how to redirect to struts action from java script?

if condition in the script got success then i need to invoke one action in the config xml, otherwise no action invoking the control needs to stay at same page? please help on this?

Java Script

    function displayDate()
{

       var x=document.getElementsByName("userName")
    if(x = "shan")
    {   
    alert("shankarasd");
    document.myForm.action ="/setUpForInsertOrUpdate";
    document.myForm.submit();
    }

}

HTML

    <html>
        <body>
        <s:form action="HelloWorld" >
            <s:textfield name="userName" label="User Name" />
            <s:submit onclick="displayDate()" />
        </s:form>
    </body>
</html>

config.xml

 <struts>
    <package name="default" extends="struts-default">
        <action name="HelloWorld" class="vaannila.HelloWorld.HelloWorld"> 
            <result name="SUCCESS">/success.jsp</result>
        </action>
        <action name="setUpForInsertOrUpdate" method="setUpForInsertOrUpdate" class="vaannila.HelloWorld.HelloWorld">
            <result name="SUCCESS1">/success1.jsp</result>
        </action>
        <action name="back" method="back" class="vaannila.HelloWorld.HelloWorld">
            <result name="SUCCESS2">/success.jsp</result>
        </action>
    </package>
</struts> 

Upvotes: 4

Views: 25411

Answers (3)

Anant T
Anant T

Reputation: 101

you can call action controller with parameter on click event

$('#loginSubmit').click(function(){ 

var Username= take the value for text fields 

var Password =take the value for text fields 
var url = "login"; 

var FormD = '<form method="post" action="' + url + '" id="frmSubmit" autocomplete="off">';

 FormD += '<input type="hidden" name="Username" value="' + Username+ '" />'; 

FormD += '<input type="hidden" name="Password" value="'  + Password+ '" />'; 

FormD += '</form>';
 $("body").append(FormD); $("#frmSubmit").submit(); 
});

Upvotes: 3

Ivan
Ivan

Reputation: 251

try is:

function displayDate(){

    var x=document.getElementsByName("userName")
    if(x = "shan")
    {   
    alert("shankarasd");
    document.myForm.action ="/setUpForInsertOrUpdate";
    document.myForm.submit();


    location.href = "nameaction.action?parameter1="+value1+"&parameter2="+value2;
    }

}

Upvotes: 2

Sarin Jacob Sunny
Sarin Jacob Sunny

Reputation: 2138

try it

window.location='youractionname'

This will redirect your window into your destination

If you want to sent your values to other page, then follow this method

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">

function displayDate()
{

   var x=document.getElementsByName("userName")
if(x =="shan")
{   
alert("Redirecting");
return true;
}
else{  
alert("Not Redirecting");
return false;
}
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
  <s:form action="HelloWorld"  onsubmit="displayDate();">
        <s:textfield name="userName" label="User Name" />
        <s:submit onclick="displayDate()" />
    </s:form>
</body>
</html>

What I modified is, changed the function calling from button to form submit. And removed the unwanted things from function

Upvotes: 6

Related Questions