有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使服务器端域模型可用于客户端web浏览器?

在使用Spring MVC的web应用程序中,我有一个丰富的域模型。 我想将此域模型提供给客户端web浏览器。例如,由于我的域模型包含一个类Person,其中包含方法Set<Person> getFriends()DateTime getBirthday(),因此我希望在客户端使用这些方法。使用场景包括

  • 当用户请求时,动态更新访问浏览器的HTML以列出所有好友,或
  • 按生日对HTML中的persons进行排序

请注意,我在这里不是为了在“视图呈现阶段”(例如JSP)中访问我的域模型。我在这里寻找在我的web应用程序的用户浏览器上访问我的域模型。例如,我不想在“视图渲染阶段”对Person实例进行排序。我希望稍后在我的用户浏览器上进行排序

我的挑战有什么解决方案


共 (3) 个答案

  1. # 1 楼答案

    Javascript——有一些框架可以帮助减轻负担。您描述的场景是对某个服务的Ajax调用。您可以将数据表示为json,这将是轻量级的,并且很容易使用javascript添加到页面中

  2. # 2 楼答案

    Ember.js(特别是它的Models)和Grails在一起使用时,完全可以做你想要的事情。我相信您可以使用任何Java框架来实现这一点,但Grails让它变得非常简单。下面是一些让你开始学习的模式,但是here's a complete example app

    域类:

    class Person {
        String name
    }
    

    控制器:

    class PersonsController {
        def index() { render (["person": Person.list()] as JSON) }
    }
    

    余烬。js应用程序:

    App.Store = DS.Store.extend({
       revision: 11,
       adapter:  DS.RESTAdapter.create({
        namespace: 'app'
      })
    )};
    App.Person = DS.Model.extend({
        name: DS.attr('string')
    )};
    

    在浏览器中,这个命令将通过从后端获取/app/persons来填充浏览器中的数据存储。修改浏览器中的实例将自动将更新后的实例发送到控制器

    App.Person.list()
    

    您将想查看my answer on getting the two to play together in perfect harmony以了解更复杂的应用程序