Spring Roo JDialog表更新表内容

时间:2013-08-12 08:31:27

标签: jquery jstl spring-roo

我的JQuery对话框包含<input><table><input><table> onload 内容的过滤字段。我听说JQGrid有这个功能但是这个模块暂时不适合我。

我尝试搜索其他解决方案并提出AJAX。我在这个帖子中使用Spring-Roo,因为AJAX可以解决这个问题,所以我对这个AJAX事物不熟悉。这是没有任何javascript的视图代码的结构。

<form:form action="POST" action="form_action" modelAttribute="form">
    <div>
        <form:input path="filterField" />
        <input type="submit" value="Search" />          
    </div>
    <div>
        <table>
            <c:forEach items="${items}" var="itr">
                <tr>
                    <td>${itr.data}</td>
                </tr>
            </c:forEach>
        </table>
    </div>
</form:form>

我是JQueryAJAXSpring-Roo的新手。非常感谢对此进行详细说明。

1 个答案:

答案 0 :(得分:1)

由于这是一个非常笼统的要求,我将尽力给你一个非常一般的答案。

您需要做几件事来进行异步调用,您需要做出几个决定。理解AJAX不再是AJAX,但它是一个通用术语,现在应用于从基于浏览器的客户端到某种后端进行异步调用的任何进程。

首先,您需要编写一个方法来处理您的AJAX请求。这是您必须做出的第一个决定:服务的请求参数是什么以及产生的有效负载是什么。我优先考虑RESTful JSON类型的请求,但很多人都喜欢XML。对于RESTful JSON版本,您可以执行以下操作:

@RequestMapping("/widgets/{id}")
public @ResponseBody Widget getMyWidget(@PathVariable Integer id) {
  // ...perform some lookup, idealy in a service layer
  Widget myWidget = myService.findWidget(id);
  return myWidget;
}

此处的重要部分是@ResponseBodyreturn myWidget。在Spring中,@ResponseBody表示返回将逐字地复制到响应主体中。因此,例如,您可以返回一个包含HTML代码的String,它只是复制/粘贴到响应中。这与正常返回相反,后者通常是一些表示View的String名称。 PFM的第二位(纯friggen魔术)是Wiget类型的回归。只要你的路径中有Jackson库,Spring就会自动使用它来序列化你返回JSON。这需要服务器端。

在客户端,您需要在服务器上调用您的服务。首先,抛弃<input type="submit" value="Search" />,然后改为使用类型按钮。使用提交类型只会导致问题,因为它会尝试提交表单,这不是异步的。将jQuery单击处理程序附加到按钮,并使用它的$.ajax()方法来调用您的服务。同样,有很多选择,我无法全部通过它们。但是,这里的一般想法是做这样的事情:

$('#myButton').click(function() {
  $.ajax({
    url: 'http://myhost/myController/widget/1',
    success: function(data) {
      // Do something with the widget, like fill a table full of stuff
    }
  });
});

jQuery中的$ .ajax()调用有很多选项,并且有各种各样的例子。您可能也想要处理错误响应...此示例仅显示处理成功。

至少应该让你开始。您将不得不自行调查所有选项和可能性,因为我无法为您做出架构决策,因为我不了解您的应用程序或涉及的情况。