日期:2014-05-16  浏览次数:20630 次

portlet+struts+AJAX传参数问题

在portlet的前端页面,所有链接都被变形了,所以如果想用ajax的方式拼出一个链接,以转向到portlet中的其它页面,则直接的方式是不可行的。

原来写的ajax操作后台动作,以保持前端可视的作法,会出现问题。

看了很多解法,最后还是一个老外的代码让我找到了思路。

原来写成 xxxx.do?xxx=xxx&xxx=xxx的写法,在portlet+struts中要写成<a href="<s:url action="xxxx.do?xxx=xxx&xxx=xxx" portletUrlType="action" portletMode="view"/>xxxx</a>

也就是说,在页面出来之前,由struts生成链接,再由portal进行变形,这样的话,后面的xxx=xxx&xxx=xxx就不能在页面生成以后,再由script来拼成了。

解决的方式是:不要有“get”方式来做,由ajax以POST方式访问xxxx.do再将参数传入。大致如下:

var ajax=new Ajax.Request("xxxx.do",

method:"post",

parameter:{

"xxx":"xxx",

"xxx":"xxx},

onComplete:fuction(r){xxxxxxxx}

);

?

也就是说,以post方式传参数时,参数不会与url混合而变形,这也是portlet与ajax结合的好办法了。