相信很多人雖然喜歡Ext,卻不太喜歡寫javascript,一個原因是javascript太靈活、太強大了,所以有時候很難掌控。因此,春節期間仿照http://wlr.easyjf.com上下載的原始碼,基於EasyJWeb1.1,使用了其中Rich Component技術寫了一個跟williamraym的單使用者blog功能完全一樣ExtJS綜合應用,不同在於這裡不需要manage.js、core.js、topic.js等眾多的javascript代碼,所有的組件及自訂控制項都是在伺服器用java書寫。
這個應用示範了如何在用java代碼寫ExtJS的各種控制項,如何對各種事件進行響應,如何與伺服器端進行整合等。用java的好處是多方面的,有興趣的朋友慢慢體會。
應用樣本地址:http://wlr2.easyjf.com
原始碼:ftp://ftp1.easyjf.com/easyjweb/demo/blog2.zip
ExtJS相關的技術資料:http://wlr.easyjf.com
線上《ExtJS2.0實用簡明教程》:http://www.easyjf.com/blog/html/20080217/1179671.html
關於EasyJWeb1.1:http://www.easyjf.com/html/20080218/2424833.html http://wiki.easyjf.com/display/wiki/EasyJWeb
讓我們一起攜起手來,支援國產開源,從我做起。
應用:
(日誌分類管理)
(後使用者管理)
管理員登入的AdminLoginAction中的代碼:
public class AdminLoginAction extends RichComponentAction ...{
public void doIndex() ...{
Window win = new Window("win1", "登陸系統", 265, 140);
win.setClosable(false);
Form f = new Form("fp");
f.setLabelAlign("right");
f.setLabelWidth(55);
f.set("bodyStyle", "padding-top:6px");
f.set("frame", true);
f.getDefaults().put("width", 158);
TextField tf1 = new TextField("userName", "帳號");
tf1.set("cls", "user");
TextField tf2 = new TextField("password", "密碼");
tf2.setInputType("password");
tf2.set("cls", "key");
f.add(tf1, tf2);
win.add(f);
Function success = new ActionFunction(
"window.location.href = 'manage.ejf';");
Function failure = new ActionFunction(
"form.reset();if(action.failureType == Ext.form.Action.SERVER_INVALID)Ext.MessageBox.alert('警告',action.result.errors.msg);");
FormAction action = new FormAction("action1",
"portal.ejf?cmd=adminLogin", success, failure);
action.setWaitMsg("請稍後...");
Button b = new Button("登陸", new Function(
"var fp=Ext.getCmp('fp');fp.form.submit(action1);"));
Button b2 = new Button("重設", new Function(
"var fp=Ext.getCmp('fp');fp.form.reset();"));
win.addButtons(b, b2);
win.show();
this.addComponents(action, win);
}
}