我有一个场景,我需要调用一个Java方法来设置一些请求属性,并且必须在jsp页面中反映出来。
<script type="text/javascript">
setInterval(function() {
ajaxAction($('#refresh'), 'moveETHAction_fetchExecutorData');
return false;
//callNextMethod(document.getElementById('moveForm'), 'moveETHAction_',
// 'fetchExecutorData');
}, 60 * 1000);
function ajaxAction(form, url) {
/* the time and hour are added to the request for create an unique URL for IE.
* The call to the server is realised only if the url is different...
*/
params = Form.serialize(form) + '&ms=' + new Date().getTime();
currentFocused = document.activeElement.id;
lastActionCalled = url;
formUsed = form;
var myAjax = new Ajax.Request(url, {
method : 'post',
parameters : params,
onComplete : showResponse
});
}
function showResponse(originalRequest) {
xml = originalRequest.responseXML;
}
</script>
如你所见,我想点击动作类和相应的方法。 但是,除了获取将在Java动作类中设置的一些请求属性之外,我不必替换视图部分中的任何内容。
总视图部分是一种形式('sendOrder'),我还包括一个表单(主表单中的'刷新'。抱歉,我不知道如何实现我的要求。我只是试了一下。
请告诉我如何解决此问题?使用AJax并不是强制性的,我需要做的就是点击java方法并显示带有更新请求属性的同一页面。
答案 0 :(得分:1)
我不确定你想从Action获得多少个字段,你可以很好地使用Jquery和Struts2-Json插件来为你完成工作。
S2 Json插件将帮助您以JSON格式发回响应,您可以使用Jquery JSon功能来解析这些字段并按照您的方式填充值。
这是你必须要做的事情
var myFormValues='id='+uuid;
$.getJSON('myAction',myFormValues,function(data) {
$.each(data.myObject,function(key, value){
alert(key);
alert(value);
});
});
此处key是字段的名称,value是相对于该字段持有的值
在上面,您正在调用一个动作myAction
,它将根据您myFormValues
发送的值返回JSON。
这是你行动的模拟
public class MyAction extends ActionSupport{
private String id;
//getter and setter
private String vallue1;
private String vallue2;
private String vallue3;
//there getter ans setters
public String execute() throw Exception{
//Fill you values based on the condition
return SUCCESS;
}
}
<package name="JSON" extends="json-default">
<action name="myAction" class="MyAction">
<result type="json"></result>
</action>
希望这会给你一些想法