如何使用AJAX渲染视图,JQuery使用Spring MVC。
我应该使用什么样的最佳设计模型在Web项目中使用AJAX,JQuery和Spring MVC来渲染视图。
过去我做了Spring / Java编程,我把每个屏幕都做成了一个JSP文件。所以每当我需要它来显示一个新的屏幕时,我都会调用服务器并加载一个新的JSP。
现在使用Ajax和JQuery
我可以拥有JSP页面然后使用JQuery来改变屏幕与DIV,使其看起来像新页面而不需要去服务器,唯一的问题是如何显示这个?任何简单的方法
我在想使用Ajax和JQuery会让我减少我必须拥有的JSP页面的数量,但我不想让一个文件中包含大量的javascript,并且很难用javascript渲染屏幕
我在考虑使用ajax加载屏幕的不同部分可能需要它,但在屏幕上显示它们有不同的JSP
答案 0 :(得分:2)
如果您想将ajax调用合并到您的Web应用程序中,您可以做出几个基本选择。您将发出ajax请求,并获得响应。该格式会有什么回应?
有两种非常常见的选择:
第二种方法就是你在问题中描述的内容。在人们这样做的意义上,它是一种有效的方法,但我通常更喜欢让我的异步调用使用JSON,并在源页面上包含视图逻辑,并在必要时隐藏视图。
要回答有关隐藏和显示DIV元素的问题,答案是使用jQuery的toggle()函数。
答案 1 :(得分:0)
应该看一下backbone.js
这是一个javascript框架,它依赖于RESTful服务来提供持久性和提取。
框架本身设计得很好,将视图逻辑与模型层等区分开来。
如果您选择基于不同视图加载信息的jsp解决方案,我可能会建议采用不同的方法。而不是您的控制器返回jsp视图,而是返回JSON并让ajax呈现json。通过诸如把手之类的模板系统可以非常干净地渲染这些信息,从而减少代码混乱。
答案 2 :(得分:0)
不要使用任何JSP / JSTL并仅将页面保持在干净的HTML和CSS中。使用360或其他任何线框来创建页面模板。您可以使用此线框将视图放置在需要的位置。
然后为每个Viewlet分配一个<div id="viewlet1"></div>
。
加载Java脚本文件,其中包含每个viewletid与rest函数的绑定。例如:
var viewlets=[ ["#custmeraddress","/customer/address"],["..","...."],...]
在DocumentReady中,将Rest响应绑定到相应的位置,例如:
$(viewlets[0]).load(viewlets[1]);
将每个休息函数的html提取到相应的位置。
其余每个函数都必须只生成XML。他们不得生成任何HTML。每个rest函数在返回内容之前,都应该使用XSL将XML转换为HTML。
保留一组主XSL文件和特定功能包括将任何其余生成的XML转换为HTML。
所有其他函数都应该将数据访问委托给主DAO。主DAO本身应该不了解生产者和消费者,它应该只是调解。将主DAO使用的所有SQL保留在bean规范或静态XML文件中。每个查询都必须在此查询库文件中,以便缓存管理器可以缓存查询结果。
根据rest函数,master DAO找到所需的XML,从请求对象中应用params,创建XML片段并返回到rest函数。
主DAO也可以是缓存管理器的使用者。缓存管理器拦截所有读取和写入,分析SQL并验证/无效查询库中任何查询的缓存图像。