Struts2将url作为字符串传递

Struts2 pass url as a string

本文关键字:字符串 url Struts2      更新时间:2023-09-26

我使用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的值不是作为一个整体来处理的,而是被解析的。

我想知道是否有一种方法可以解决这个问题。

如果你想在url中使用包含特殊字符的参数,它们应该被urlencoded.

var backURL = encodeURIComponent("ActionB!someMethodB.action?Bparam1=somevalue&Bparam2=somevalue");

另外,URL的硬编码值可以在服务器上使用s:url标签构建。

var backURL = encodeURIComponent('<s:url action="ActionB" method="someMethodB"><s:param name="Bparam1" value="somevalue"/><s:param name="Bparam2" value="somevalue"/></s:url>'); 

在这种情况下,默认&被转义为&amp;,但转义值通常与浏览器一起使用。