繁体   English   中英

如何使用Struts2框架将动态值分配给javascript中url的参数

[英]How can i assign dynamic value to the parameter of a url within javascript,using struts2 framework

在dropdwon列表上的onchange事件上,我调用了javascript方法。 在这个javascript中
我使用url标记调用操作类的方法,并且该url还通过
参数。 但是当我这样做时,设置器/获取器总是获得空值
动作类的方法。

我的代码是:从下拉列表的onchange事件中调用javascript内部的setbusiness()方法,并将值传递给它。 警报消息带有ID值。 但是,当调用xmlhttp.open("GET",url,true)将使用具有null值的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>    
var url = "<c:url action="feedajax.action"><c:param name="sourceid">"%{sid}"</c:param></c:url>";                

您正在JSP中间使用OGNL转义。 JSP对OGNL一无所知。 您还尝试连接两个不带+字符串,因此语法仍然会失败。

由于S2的请求包装程序,您可以使用普通的JSP EL:

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

OGNL表达式仅在了解OGNL的内容(例如S2标签)中有效。

尽管这不是问题,但是IMO为您的JS字符串和JSTL参数使用相同的引号使读取源变得非常困难-IMO可以更容易区分两者:

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

更好的是,不要混淆这两个操作,而要使用<c:param>value属性:

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

var url = '${feedUrl}';

警告如果源ID是用户可以传递的内容,则应使用JS转义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM