Spring Portlet 2.5 で Ajax を使用しようとしています (このバージョンでテストを実行する必要があるため、より高いバージョンにアップグレードすることはできません。したがって、使用できません@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()));
}