我正在使用javascript函数提交表单,在javascript函数中,我指定form.action= "Struts2 url goes here";
以下是我的代码片段:
var form = document.forms['myForm'];
if (form != null) {
var backURL = "ActionB!someMethodB.action?Bparam1=somevalue&Bparam2=somevalue";
form.action="ActionA!someMethodA.action?Aparam1=somevalue&Aparam2=" + backURL;
form.submit();
}
问题在于,在操作方法someMethodA
中,Aparam2
的值始终被backURL
中的第一个&符号截断。
我尝试用backURL
这样的引号括起form.action="ActionA!someMethodA.action?Aparam1=somevalue&Aparam2='" + backURL + "'";
,但它不起作用。有点让我觉得backURL
的价值不是整体对待,而是解析。
我想知道是否有办法解决这个问题。
答案 0 :(得分:1)
如果你想在url中使用包含特殊字符的参数,那么它们应该是urlencoded。
var backURL = encodeURIComponent("ActionB!someMethodB.action?Bparam1=somevalue&Bparam2=somevalue");
此外,可以使用s:url
标记在服务器上构建URL的硬编码值。
var backURL = encodeURIComponent('<s:url action="ActionB" method="someMethodB"><s:param name="Bparam1" value="somevalue"/><s:param name="Bparam2" value="somevalue"/></s:url>');
在这种情况下,默认情况下&
会转义为&
,但通常会在浏览器中使用转义值。