2012-02-24 74 views
4

如何从java脚本重定向到struts动作?如何在struts 2中将java脚本重定向到struts动作?

如果脚本条件得到了良好的话,我需要调用的配置XML一个动作,否则无动作调用控件需要留在同一页?请帮忙吗?

Java脚本

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

调用动作控制器参数如果要比较的'm的值'到'1',你绝对不想使用'='(这是赋值操作符)。而是使用'=='。 – 2012-02-24 14:11:25

+0

它可以是任何值,我只是举了一个例子。 – jcrshankar 2012-02-24 14:17:35

+0

实际上不是检查m == 1,我会从用户那里获取值并用于检查。 – jcrshankar 2012-02-24 14:19:09

回答

5

尝试

window.location='youractionname' 

这将你的窗口重定向到您的目的地

如果你想发送你的价值观到其他页面,然后按照这个方法

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

我修改了什么,改变了功能的按钮调用到表单提交。 并已删除功能不需要的东西

+1

我相信OP已经找到了答案的解决方案,因为他在comment.Still很好的解决方案中提到:) – 2012-02-27 09:20:25

+0

@UmeshAwasthi,这是事实,他发现代码重定向他的网页。 但是从他的问题来看,很明显他想要发送一些表格值,而这是他找到的解决方案所不可能的。 (逻辑错误):-) – 2012-02-27 09:25:56

+0

只回答后,其实我看到他的评论 – 2012-02-27 09:26:52

1

尝试是:

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

} 
2

您可以点击事件

$('#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(); 
}); 
+0

按钮点击事件时,可以使用此代码。 – 2017-03-03 05:41:18