当我手动提交表单而不是表单的操作时,我无法使用struts2重定向到另一个页面
我的struts.xml部分
<action name="login" class="com.abc.csm.actions.Login">
<result type="plainText" name="success"></result>
</action>
<action name="home">
<result name="success" type="redirect">/view/Welcome.jsp</result>
</action>
在index.html上我有一个包含2个字段email
和project id
的表单,所以我提交此表单,如
$(function() {
$("#loginSubmitBtn").click(submitLogin);
function submitLogin()
{
if(validate())
{
$.post("/csm/login.action",
{ emailaddress: document.getElementById("email_id").value,
projectid: document.getElementById("project_id").value },
function(xml)
{
if($(xml).find('isSuccess').text()=="true")
{
sessiontoken=$(xml).find('sessiontoken').text();
$.post("/csm/home.action", {
sessiontoken: sessiontoken
});
}
}
);
}
}
});
});
在上面的代码中,我试图从服务器端响应中获取sessiontoken
,验证登录是否成功,然后将其重定向到/csm/home.action
,但我没有被重定向,我正在使用fiddler监视,我可以看到Welcome.jsp的内容(/csm/home.action映射到struts.xml中的Welcome.jsp)作为响应,但没有重定向发生。这里有什么解决方案?感谢
已更新这是有效的,您也可以查看我附加的方式sessiontoken
是否正确?
$('#submitDBtn').click(function(event){
event.preventDefault();
if(validate())
{
$.post("/csm/login.action",
{ emailaddress: document.getElementById("email_id").value,
projectid: document.getElementById("project_id").value },
function(xml)
{
if($(xml).find('isSuccess').text()=="true")
{
sessiontoken=$(xml).find('sessiontoken').text();
/*$.post("/csm/home.action", {
sessiontoken: sessiontoken
});*/
$('#launch').attr('action', '/csm/home.action?sessiontoken='+sessiontoken);
$('#launch').submit();
}
}
);
}
});
答案 0 :(得分:1)
尝试这样做
成功而不是
$.post("/csm/home.action", {sessiontoken:sessiontoken});
试
window.location = "/csm/home.action"+sessiontoken;
abt表单提交
看看这里
http://jquery-howto.blogspot.com/2009/05/disable-submit-button-on-form-submit.html
您可以使用javascript禁用表单的默认行为,然后在一些处理后使用jquery提交表单
关于它是否是一个好方法取决于但是我听到并且读到应该避免它...
修改强> 关于在隐藏字段中发送sessiontoken,就在提交表单之前执行此操作
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "sessiontoken");
hiddenField.setAttribute("value", sessiontoken);
var form = document.getElementById("yourFormId");
form.appendChild(hiddenField);
$('#formid').submit();