使用Ajax刷新页面

时间:2012-08-21 06:01:12

标签: java ajax struts2 refresh

我有一个场景,我需要调用一个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方法并显示带有更新请求属性的同一页面。

1 个答案:

答案 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>

希望这会给你一些想法