我正在尝试将 Ajax 与 Spring Portlet 2.5 一起使用(我无法升级到更高版本,因为我需要在此版本上运行测试 - 因此我无法使用@ResourceMapping
)。所以这就是我尝试过的
<script type='text/javascript'>
function <portlet:namespace />setCurrentDateTime() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
//now what?
}
};
xhr.open("GET", '${actionURL}', true);
xhr.send();
}
</script>
<table>
<tr>
<td><b><a href="# "onclick="<portlet:namespace />setCurrentDateTime();" style="color: black;" id="refreshLink">Refresh</a></b></td>
</tr>
</table>
<br/>
<div id="<portlet:namespace />messageText">${date}</div>
通过此代码,服务器端的操作被正确触发,但我不确定如何刷新messageText
以从服务器获得更新的值。
这是我的服务器端代码
@RequestMapping
public ModelAndView defaultView(RenderRequest request, RenderResponse response) {
String date = (String) request.getPortletSession().getAttribute("date");
if (date == null) {
return new ModelAndView("home");
} else {
Map<String, Object> map = new HashMap<String, Object>();
map.put("date", date);
return new ModelAndView("home", map);
}
}
@RequestMapping(params = "action=getDateTime")
public void handleActionRequest(ActionRequest ar, ActionResponse ar1) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
ar.getPortletSession().setAttribute("date", sdf.format(new Date()));
}