如何使用struts2框架为javascript中url的参数分配动态值

如何使用struts2框架为javascript中url的参数分配动态值,javascript,struts2,ognl,Javascript,Struts2,Ognl,在dropdwon列表上的onchange事件中,我调用了一个javascript方法。在此javascript中 方法我使用url标记调用了一个action类,这个url也会传递值 参数但在执行此操作时,setter/getter总是得到null值 action类的方法 我的代码是: 从下拉菜单的onchange事件调用javascript内部的setbusiness()方法 列表并将值传递给它。警报消息带有id值。 但是当调用xmlhttp.open(“GET”,url,true)时,将使用

在dropdwon列表上的
onchange
事件中,我调用了一个javascript方法。在此javascript中
方法我使用url标记调用了一个action类,这个url也会传递值
参数但在执行此操作时,setter/getter总是得到null值
action类的方法

我的代码是: 从下拉菜单的onchange事件调用javascript内部的
setbusiness()
方法 列表并将值传递给它。警报消息带有id值。 但是当调用
xmlhttp.open(“GET”,url,true)
时,将使用 具有空值的setter方法。我不明白为什么没有价值。 请帮助我如何为URL的参数分配动态值

<script>  
function setbusiness(sourceid) {  
alert(" sourceid "+sourceid);
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv1").innerHTML=xmlhttp.responseText;
}
}
var url = "<c:url action="feedajax.action">
<c:param name="sourceid">"%{sid}"</c:param></c:url>";                
xmlhttp.open("GET",url,true);
xmlhttp.send();
} 
</script>    

函数setbusiness(sourceid){
警报(“源ID”+源ID);
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“myDiv1”).innerHTML=xmlhttp.responseText;
}
}
变量url=”
“%{sid}”;
open(“GET”,url,true);
xmlhttp.send();
} 
OGNL表达式仅在了解OGNL的内容(如S2标记)中有效

虽然这不是问题所在,但IMO对JS字符串和JSTL参数使用相同的引号会使读取源代码变得非常困难——IMO在这两者之间进行区分更为清晰:

var url = '<c:url action="feedajax.action"><c:param name="sourceid">${sid}</c:param></c:url>';

警告:如果源ID是用户可以传入的,那么应该是JS转义的。

这真的很难读取。还有,你为什么不使用让Ajax变得更容易的无数JS库呢?!请包括呈现的HTML,看看源代码看起来与实际情况不完全相关。报告问题时,最好明确说明哪些不起作用;我很惊讶控制台中没有出现JavaScript错误。事实上,我对这方面很陌生,如果你能用不同的方法来完成这项任务,我会尝试的。我在控制台中没有收到任何javaScript错误。在应用这个xmlhttp.open(“GET”,url,true)操作类之后,会使用setter方法setSourceid(String sourceid)调用,我尝试在控制台上打印出这个值,但没有输出。现在,我发现这里不能使用OGNL表达式。你能帮我怎么把id值动态地发送到action类吗?我陷入了这个问题…请帮我写一些代码。
var url = "<c:url action="feedajax.action"><c:param name="sourceid">${sid}</c:param></c:url>";                
var url = '<c:url action="feedajax.action"><c:param name="sourceid">${sid}</c:param></c:url>';
<c:url var="feedUrl" action="feedajax.action">
  <c:param name="sourceid" value="${sid}"/>
</c:url>

var url = '${feedUrl}';