锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩精品av,91大神在线网站,91在线观看免费高清http://www.aygfsteel.com/caizh2009/category/44465.html涓庡ぇ瀹跺叡鍚屾垚闀?/description>zh-cnWed, 31 Mar 2010 03:17:26 GMTWed, 31 Mar 2010 03:17:26 GMT60 OGNL琛ㄨ揪寮忚璦浠嬬粛http://www.aygfsteel.com/caizh2009/archive/2010/03/31/317015.html灝忚彍姣涙瘺灝忚彍姣涙瘺Wed, 31 Mar 2010 02:52:00 GMThttp://www.aygfsteel.com/caizh2009/archive/2010/03/31/317015.htmlhttp://www.aygfsteel.com/caizh2009/comments/317015.htmlhttp://www.aygfsteel.com/caizh2009/archive/2010/03/31/317015.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/317015.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/317015.htmlOGNL浠嬬粛
OGNL鏄疧bject-Graph Navigation Language鐨勭緝鍐欙紝瀹冩槸涓縐嶅姛鑳藉己澶х殑琛ㄨ揪寮忚璦錛圗xpression Language錛岀畝縐頒負EL錛夛紝閫氳繃瀹冪畝鍗曚竴鑷寸殑琛ㄨ揪寮忚娉曪紝鍙互瀛樺彇瀵硅薄鐨勪換鎰忓睘鎬э紝璋冪敤瀵硅薄鐨勬柟娉曪紝閬嶅巻鏁翠釜瀵硅薄鐨勭粨鏋勫浘錛屽疄鐜板瓧孌電被鍨嬭漿鍖栫瓑鍔? 鑳姐傚畠浣跨敤鐩稿悓鐨勮〃杈懼紡鍘誨瓨鍙栧璞$殑灞炴с?br /> XWork閬靛驚“涓嶈閲嶅鍦板彂鏄庡悓涓涓疆瀛?#8221;鐨勭悊璁猴紝瀹冪殑琛ㄨ揪寮忚璦鏍稿績鐢ㄧ殑灝辨槸榪欎釜OGNL銆傛垜浠厛 鏉ョ湅鐪嬩竴涓畝鍗曠殑渚嬪瓙錛?br /> 榪樿寰楁垜浠敤鎴鋒敞鍐岀殑閭d釜渚嬪瓙鍚楋紵鎴戜滑杈撳叆妗嗙殑name鐢ㄥ埌鐨勫悕瀛楀氨鏄疧GNL鐨勮〃杈懼紡錛屾瘮濡傦細鐢ㄦ埛鍚嶇殑杈撳叆 妗嗭細“<input type="text" name="user.username">”錛屽湪鐢ㄦ埛娉ㄥ唽鎴愬姛涔嬪悗鎴戜滑瑕佹樉紺虹敤鎴鋒敞鍐岀殑淇℃伅錛岀敤浜?#8220;<ww:property value="user.username"/>”銆侷nput杈撳叆妗嗛噷鐨?#8220;user.username”錛屽畠瑙f瀽鎴怞ava璇彞 涓猴細getUser().setUsername();錛宲roperty鏍囩閲岀殑“user.username”瑙f瀽涓篔ava璇? 鍙ワ細getUser.getUsername();銆?br /> 鎴戜滑鐨勪袱涓〃杈懼紡閮芥槸鐩稿悓鐨勶紝浣嗗墠涓涓繚瀛樺璞″睘鎬х殑鍊鹼紝鍚庝竴涓槸鍙栧緱瀵硅薄灞炴х殑鍊箋傝〃杈懼紡 璇█綆鍗曘佹槗鎳傚嵈鍙堝姛鑳藉己澶э紝鍏充簬OGNL鏇村鐨勪粙緇嶅彲浠ュ幓http://www.ognl.org錛? 閭i噷鏈夊緢璇︾粏鐨勬枃妗?br />  
鍊煎爢鏍堬紞OgnlValueStack
OGNL鍦ㄦ鏋朵腑鐨勫簲鐢紝鏈涓昏鏄敮鎸佹垜浠殑鍊煎爢鏍堬紙Value Stack錛夆斺擮gnlValueStack錛屽畠涓昏鐨勫姛鑳芥槸閫氳繃琛ㄨ揪寮忚璦鏉ュ瓨鍙栧璞$殑灞炴с傜敤鎴風晫闈㈣緭鍏ユ暟鎹紝瀹冧細鏍規嵁淇濆瓨琛ㄨ揪寮忓皢鏁版嵁渚濇淇濆瓨鍒? 瀹冨爢鏍堢殑瀵硅薄涓紝涓氬姟鎿嶄綔瀹屾垚錛岀粨鏋滄暟鎹細閫氳繃琛ㄨ揪寮忚鑾峰彇銆佽緭鍑恒?br /> 榪樿寰楁垜浠敤鎴鋒敞鍐岀殑渚嬪瓙鍚楋紵涓嬮潰鎴戜滑鐢ㄤ竴孌電▼搴忔潵婕旂ず瀹冨悜 OgnlValueStack涓繚瀛樸佸彇寰楁暟鎹殑姝ラ錛?br />  
// DemoRegisterValueStack
package example.register;
import com.opensymphony.xwork.util.OgnlValueStack;
 
public class DemoRegisterValueStack {
    public void demo(){
        RegisterAction action = new RegisterAction();
        OgnlValueStack valueStack= new OgnlValueStack();
        valueStack.push(action);
       
        valueStack.setValue("user.username","Babydavic");
        System.out.println("username = "+valueStack.findValue("user.username"));
    }
 
    public static void main(String[] args) {
DemoRegisterValueStack demoValueStack = new DemoRegisterValueStack();
        demoValueStack.demo();
    }
}
 
鎴戜滑鏉ョ湅涓鐪嬪畠鐨刣emo()鏂規硶錛?br /> 1銆?nbsp;  鍒涘緩鎴戜滑鐨凙ction錛圧egisterAction錛夌被鐨勫璞ction錛屽皢action瀵硅薄鍘嬪叆鍫嗘爤valueStack涓傚湪WebWrok涓? Action鐨勫垱寤恒佸叆鏍堟槸鍦―efaultActionInvocation鏋勯犲嚱鏁頒腑榪涜鐨勶紝璇︾粏浠嬬粛瑙侊細ServletDispatcher鍘熺悊銆?br /> 2銆?nbsp;  閫氳繃琛ㄨ揪寮忚璦錛岃皟鐢ㄥ爢鏍堝璞$殑get()銆乻et()鏂規硶錛岃緗瀵硅薄鐨勫箋?br />    public void setValue(String expr, Object value)
   璇彞錛歷alueStack.setValue("user.username","Babydavic");
   鐨勪綔鐢ㄧ瓑鍚屼簬錛歛ction.getUser().setUsername("Babydavic");
3銆?nbsp;  閫氳繃琛ㄨ揪寮忚璦錛屽幓鍫嗘爤瀵硅薄涓煡鎵炬垜浠墠闈繚瀛樼殑鍊鹼紝騫跺湪鎺у埗鍙版墦鍗般倂alueStack.findValue("user.username")絳夊悓 涓庤鍙ワ細
action.getUser().getUsername()
鏈鍚庢帶鍒跺彴鎵撳嵃鐨勭粨鏋滐細
         username = Babydavic
 
 
CompoundRoot
鍦∣gnlValueStack涓紝涓涓爢鏍堝叾 瀹炴槸涓涓狶ist銆傛煡鐪婳gnlValueStack浣犱細鍙戠幇錛屽爢鏍堝氨鏄? com.opensymphony.xwork.util.CompoundRoot綾葷殑瀵硅薄錛?br />  
public class CompoundRoot extends ArrayList {
    //~ Constructors /////////////////////////////////////
    public CompoundRoot() {
}
 
    public CompoundRoot(List list) {
        super(list);
}
 
    //~ Methods ////////////////////////////////////////////
    public CompoundRoot cutStack(int index) {
        return new CompoundRoot(subList(index, size()));
}
 
    public Object peek() {
        return get(0);
    }
    public Object pop() {
        return remove(0);
    }
    public void push(Object o) {
        add(0, o);
    }
}

鎴戜滑閫氳繃琛ㄨ揪寮忓悜鍫嗘爤瀵硅薄鎿嶄綔鏃訛紝鎴戜滑騫朵笉鐭ラ亾鍫嗘爤涓湁鍝簺瀵硅薄銆侽gnlValueStack浼氭牴鎹爢鏍堢敱涓婂悜涓嬬殑欏哄簭錛堝厛鍏ユ爤鍦ㄤ笅闈紝鏈鍚庡叆鏍? 鍦ㄦ渶涓婇潰錛変緷嬈″幓鏌ユ壘涓庤〃杈懼紡鍖歸厤鐨勫璞℃柟娉曪紝鎵懼埌鍗寵繘琛岀浉搴旂殑瀛樺彇鎿嶄綔銆傚亣璁懼悗闈㈠璞′篃鏈夌浉鍚岀殑鏂規硶錛屽皢涓嶄細琚皟鐢ㄣ?br /> 涓嬮潰鎴戜滑鐪嬩竴涓 OgnlValueStack鎿嶄綔鐨勭▼搴忥紝瀹冧富瑕佹紨紺轟簡濡備綍瀵筂ap瀵硅薄鐨勫瓨鍙栧拰OgnlValueStack鍫嗘爤鐨勫師鐞?br />  
package example.register;
 
import com.opensymphony.xwork.util.OgnlValueStack;
 
public class DemoGroupValueStack {
   
    public void demoAction(){
        DemoGroupAction action = new DemoGroupAction();
        OgnlValueStack valueStack= new OgnlValueStack();
        valueStack.push(action);
       
        User zhao = new User();
        zhao.setUsername("zhao");
        zhao.setEmail("zhao@yahoo.com.cn");
       
        User qian = new User();
        qian.setUsername("qian");
        qian.setEmail("qian@yahoo.com.cn");
       
        valueStack.setValue("users['zhao']",zhao);
        valueStack.setValue("users['qian']",qian);
       
       
        System.out.println("users['zhao'] = "+valueStack.findValue("users['zhao']"));
        System.out.println("users['qian'] = "+valueStack.findValue("users['qian']"));
        System.out.println("users size = "+valueStack.findValue("users.size"));
       
        System.out.println("allUserName[0] = "+valueStack.findValue("allUserName[0]"));
    }
   
    public void demoModels(){
       
        User model_a = new User();
        model_a.setUsername("model_a");
        User model_b = new User();
        model_b.setUsername("model_b");
        User model_c = new User();
        model_c.setUsername("model_c");
       
        OgnlValueStack valueStack= new OgnlValueStack();
        valueStack.push(model_a);
        valueStack.push(model_b);
        valueStack.push(model_c);
       
        System.out.println("username = "+valueStack.findValue("username"));
        System.out.println("[1].username = "+valueStack.findValue("[1].username"));
        System.out.println("[0].toString = "+valueStack.findValue("[0]"));
        System.out.println("[1].toString = "+valueStack.findValue("[1]"));
        System.out.println("[2].toString = "+valueStack.findValue("[2]"));
       
    }
    public static void main(String[] args) {
        DemoGroupValueStack demoValueStack = new DemoGroupValueStack();
        demoValueStack.demoAction();
        demoValueStack.demoModels();
    }
}
 
 
package example.register;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class DemoGroupAction {
   
    private Map users = new HashMap();
   
    public Map getUsers(){
        return this.users;
    }
   
    public List getAllUserName(){
        return new ArrayList(users.keySet());
    }
    public String execute(){
        //鎵ц涓氬姟鎿嶄綔
        return null;
    }
    public String toString(){
        return users.toString();
    }
}
娉ㄦ剰錛?銆? Map灞炴х殑瀛樺彇錛屽畠鐨勮〃杈懼紡璇█濡傦細users['zhao']錛屾敞鎰忓畠鐢?#8217;’鏉ュ紩鐢℉ashMap鐨刱ey瀛楃涓層?br /> 2銆? demoModels錛堬級鏂規硶婕旂ず浜哋gnlValueStack涓爢鏍堢殑鍘熺悊錛岃鐗瑰埆娉ㄦ剰瀹冪殑 [0].toString銆乕1].toString銆乕2].toString錛屽畠浠緷嬈¤皟鐢ㄥ爢鏍堜腑瀵硅薄鐨則oString()鏂規硶錛屽茍閫愪竴鐨勫噺灝戝爢鏍? 鏈涓婇潰鐨勫璞°?br /> 鎺у埗鍙拌緭鍑虹殑緇撴灉濡備笅錛?br /> users['zhao'] = username=zhao;password=null;email=zhao@yahoo.com.cn;age=0
users['qian'] = username=qian;password=null;email=qian@yahoo.com.cn;age=0
users size = 2
allUserName[0] = qian
 
username = model_c
[1].username = model_b
[0].toString = [username=model_c;password=null;email=null;age=0, username=model_b;password=null;email=null;age=0, username=model_a;password=null;email=null;age=0]
[1].toString = [username=model_b;password=null;email=null;age=0, username=model_a;password=null;email=null;age=0]
[2].toString = [username=model_a;password=null;email=null;age=0]



]]>
主站蜘蛛池模板: 额尔古纳市| 靖边县| 德化县| 白银市| 普兰店市| 乐亭县| 日土县| 商水县| 津南区| 宝山区| 吉木萨尔县| 贞丰县| 牡丹江市| 泸水县| 西吉县| 闽侯县| 隆子县| 岳普湖县| 合肥市| 周宁县| 永吉县| 宝山区| 黄骅市| 武川县| 定襄县| 滦南县| 神木县| 滕州市| 济宁市| 肥东县| 呼图壁县| 桃源县| 天镇县| 阿图什市| 汤阴县| 西乡县| 含山县| 汉川市| 洛川县| 遵化市| 芜湖县|