GWT+TOMCAT(weblogicなどj2eeコンテナも含む)環境で
システムを構成するとしたら
サーバ側のフレームワークは、strutsのような主に画面遷移を司るものは不要で
hibernateのようなDBアクセス周りだけで
十分ではなかろうかと思っています。
なぜかというと
GWT=jsによるアプリケーション(画面)というのがメインになる訳です。
もうお分かりですね。
jsによるアプリケーション
って
ajaxを使うことによって画面遷移をなくすことができる訳です。
#セキュリティネタが加わると微妙かもしれませんが。。。。
システム構築時には
フレームワークの選定のタスクがあるくらい
フレームワークな考えが重要視される今日この頃ですが
1.ajaxを使う
2.railsな考え
特に「Convention over Configuration」(設定より規約)
に勢いをつける意味も含めて、
strutsのような設定祭りは、無くなればいいかなとか
画面遷移を扱うフレームワークは不要になってくれればなと。。。。
Posted on 8月 16th, 2008 by mitsu
Filed under: GWT, java, 開発メモ | No Comments »
その4では、テスト用で作ったCarのリストをTableに表示した訳ですが
今回は、サーバからTable表示用の一覧を取得します。
新しくAppView2.javaを作成します。
AppView2は、PagingToolBarを持っていて
結果を1ページあたり10件ごと表示します。
まず、はじめに
新規にGWTリモートサービスを作成します。
#eclipse+cypal使っているだろうから。。。
AppRemoteService.java
AppRemoteServiceAsync.java
AppRemoteServiceImpl.java
作成したAppRemoteServiceに以下のインターフェースを追加します。
AppRemoteServiceAsyncには自動でメソッド追加されているはず。
このリターンやらパラメータが肝ですかね。
conditionは検索条件みたいなイメージです。
public PagingLoadResult<Car> getRemoteCars(Car condition, PagingLoadConfig config);
#とりあえずその2で作成したAppController.javaで使われている
#AppViewをAppView2に変更してください。
で、以下が、Remote+Paginationなテーブルです。
AppView2.java
package com.gethapp.sample.mvc.client;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.binder.TableBinder;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.TableEvent;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.PagingToolBar;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.table.DateTimeCellRenderer;
import com.extjs.gxt.ui.client.widget.table.Table;
import com.extjs.gxt.ui.client.widget.table.TableColumn;
import com.extjs.gxt.ui.client.widget.table.TableColumnModel;
import com.extjs.gxt.ui.client.widget.table.TableItem;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;
public class AppView2 extends View {
//1ページあたりの表示数
private static final int PAR_PAGE=10;
private Viewport v;
[…]
Posted on 8月 8th, 2008 by mitsu
Filed under: Ext, java, 開発メモ | No Comments »
地図好きにExt 2.2 Released(jsのほうね)を教えてもらった。GMapPanelなんてのがあったので、
GXT+gwt-google-apisのMaps API
で地図を出してみた。
Using Google Maps in a projectページに沿って、進めていくわけなのですが、
肝心のmaps.jarみたいのが出てこないし、真似して、コード書いていってもMapWidgetクラスがNotFoundで赤いままだし。
って、Downloadページにあるファイルに入っているjarファイル入れてもダメだし。
で、Search横にあるリストをCurrent DownloadsからAll Downloadsに変更してみると
あるじゃないですか、gwt-maps、
でもDeprecatedだと?!って
まぁ、非推奨なだけで動くとは思うのでgwt-maps-0.0.290.zipをダウンロード、
解凍した後、
gwt-maps.jarをincludeして、無事にtutorial通り、地図が出ました。
レイアウトとかサイズとかコンポーネントは適当ですw
デモはこちら
Posted on 8月 8th, 2008 by mitsu
Filed under: Ext, GWT, java, 地図, 開発メモ | No Comments »
その3で作ったモデルクラス(Car)のリストをTableに表示してみます。
まずは、イメージが掴めるように、簡単に考えてみます。
#多分、一番簡単なやり方だと思います。
その2で作ったAppView.javaに
Button
Text
Table
を追加します。
Button押したら、Tableにデータをロードして、
そのTableから1行選択し、選択内容をTextに表示します。
テーブル表示用のCarのリストは、130行目以下でテスト用に作っていて
85行目あたりでstoreに追加して、Tableにバインドしています。
ListStore
TableBinder
package com.gethapp.sample.mvc.client;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.binder.TableBinder;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.TableEvent;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.table.DateTimeCellRenderer;
import com.extjs.gxt.ui.client.widget.table.Table;
import com.extjs.gxt.ui.client.widget.table.TableColumn;
import com.extjs.gxt.ui.client.widget.table.TableColumnModel;
import com.extjs.gxt.ui.client.widget.table.TableItem;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Random;
import com.google.gwt.user.client.ui.RootPanel;
public class AppView extends View {
private Viewport v;
private ContentPanel cp;
//コンポーネント追加
private Table table;
private Text text;
private Button button;
[…]
Posted on 8月 8th, 2008 by mitsu
Filed under: Ext, java, 開発メモ | 2 Comments »