0

我有一个场景,我需要调用一个 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'),并且我在主窗体中包含了另一种形式('refresh'。抱歉,我不知道如何满足我的要求。我只是试了一下。

请让我知道我该如何解决这个问题?使用 AJax 不是强制性的,我需要做的就是点击 java 方法并显示具有更新请求属性的同一页面。

4

1 回答 1

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,该操作将根据您发送的值返回 JSON myFormValues。这是一个模拟你的动作

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>

希望这会给你一些想法

于 2012-08-21T06:36:06.957 回答