3

Spring MVC を利用する私の Web アプリケーションには、豊富なドメイン モデルがあります。このドメイン モデルをクライアント Web ブラウザーで利用できるようにしたいと考えています。たとえば、私のドメイン モデルにはと のPersonメソッドSet<Person> getFriends()を持つクラスが含まれてDateTime getBirthday()いるため、これらのメソッドをクライアント側で使用したいと考えています。使用シナリオは次のとおりです。

  • ユーザーの要求に応じて、訪問中のブラウザーの HTML を動的に更新してすべてのフレンドを一覧表示する、または
  • personsHTML を誕生日順に並べ替えます。

ここでは、「ビュー レンダリング ステージ」(JSP など) でドメイン モデルにアクセスするために探しているわけではないことに注意してください。Web アプリケーションのユーザーのブラウザーでドメイン モデルにアクセスするために、ここを探しています。Personたとえば、「ビューのレンダリング段階」でインスタンスをソートしたくありません。この並べ替えは、後でユーザーのブラウザで実行したいと考えています。

私の課題に対する解決策は何ですか?

4

5 に答える 5

3

Javascript-負担を軽減するのに役立つフレームワークがあります。あなたが説明したシナリオは、あるサービスへのAjax呼び出しです。データをjsonとして表すことができます。これは、javascriptを使用してページに追加するのに十分軽量で簡単です。

于 2013-03-04T00:29:51.807 に答える
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ブラウザーでは、この 1 つのコマンドで、バックエンドからフェッチしてブラウザー内データ ストアにデータを入力します。POSTブラウザー内インスタンスを変更すると、更新されたインスタンスがコントローラーに自動的に HTTP 送信されます。

App.Person.list()

より複雑なアプリケーションで 2 つを完全に調和させてプレイする方法については、私の回答をご覧ください。

于 2013-03-12T20:55:48.020 に答える
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に制限されていない場合、私は今すぐRMIを叫ぶでしょう。幸いなことに、それを機能させるための解決策があるようです。私は試していませんが、価値があるかもしれません:

jabsorb は、ブラウザーで実行されている Javascript とサーバーで実行されている Java の間で通信するためのシンプルで軽量な JSON-RPC ライブラリです。これにより、Javascript からサーバー上の Java メソッドをローカルであるかのように呼び出すことができ、パラメーターと結果の自動シリアル化が完了します。

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

于 2013-03-12T20:43:57.747 に答える
0

2 つの一般的な JavaScript MVC フレームワーク:

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

あなたはそれらを個人的に試すことができます。提案は常に主観的であり、あなたの選択も常に主観的です。自分で感じてください。

于 2013-03-19T01:53:15.250 に答える