3

在我使用 Spring MVC 的 Web 应用程序中,我有一个丰富的域模型。我想让这个域模型可用于客户端 Web 浏览器。例如,由于我的域模型包含一个Person带有方法的类Set<Person> getFriends()DateTime getBirthday(),我想在客户端使用这些方法。使用场景包括

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

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

我的挑战有哪些解决方案?

4

5 回答 5

3

Ember.js(特别是它的Models)和Grails一起使用时,完全可以满足您的需求。我确信您可以使用任何 Java 框架来执行此操作,但 Grails 使这变得非常简单。以下是一些帮助您入门的模式,但这里有一个完整的示例应用程序

领域类:

class Person {
    String name
}

控制器:

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

Ember.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在您的浏览器中,此单个命令将通过从后端获取来填充浏览器内的数据存储。修改浏览器内的实例会自动POST将更新后的实例 HTTP 发送到您的控制器。

App.Person.list()

你会想看看我关于让两者完美和谐地一起玩更复杂的应用程序的答案。

于 2013-03-12T20:55:48.020 回答
3

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

于 2013-03-04T00:29:51.807 回答
2

Abdull 你看过 GWT(Google Web ToolKit)http://bit.ly/YYz2Yx吗?

下面是一些示例代码,说明了客户端组件的创建。

例如加载联系人

            VerticalPanel contactsPanel = new VerticalPanel();
            contactsPanel.setSpacing(4);
            String[] contactNames = constants.cwStackPanelContacts();
            String[] contactEmails = constants.cwStackPanelContactsEmails();
            for (int i = 0; i < contactNames.length; i++) {
              final String contactName = contactNames[i];
              final String contactEmail = contactEmails[i];
              final Anchor contactLink = new Anchor(contactName);
              contactsPanel.add(contactLink)

http://bit.ly/12MOhZQ(实际代码示例)

于 2013-03-12T20:32:39.973 回答
0

两个流行的 javascript MVC 框架:

http://backbonejs.org/
http://knockoutjs.com/

您可以亲自尝试。建议总是主观的,你的选择也总是主观的。所以自己感受一下。

于 2013-03-19T01:53:15.250 回答
0

如果您不限于浏览器 - 以及 JavaScript,我现在会尖叫 RMI。幸运的是,似乎有一个解决方案可以让它发挥作用。我还没有尝试过,但它可能是值得的:

jabsorb 是一个简单、轻量级的 JSON-RPC 库,用于在浏览器中运行的 Javascript 和服务器上运行的 Java 之间进行通信。它允许您从 Javascript 调用服务器上的 Java 方法,就好像它们是本地的一样,并带有自动参数和结果序列化。

https://code.google.com/p/jabsorb/

于 2013-03-12T20:43:57.747 回答