锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产成人高清在线观看,亚洲精品无码久久久久sm,亚洲一区中文字幕在线电影网http://m.tkk7.com/iamtin/category/7425.htmlYou are coming a long way, baby~Thinking, feeling, memory...zh-cnTue, 27 Feb 2007 11:55:38 GMTTue, 27 Feb 2007 11:55:38 GMT60浣跨敤WebWork鍜孯ome杞繪澗鏆撮湶RSShttp://m.tkk7.com/iamtin/archive/2006/06/05/50596.htmlTinTinMon, 05 Jun 2006 14:25:00 GMThttp://m.tkk7.com/iamtin/archive/2006/06/05/50596.htmlhttp://m.tkk7.com/iamtin/comments/50596.htmlhttp://m.tkk7.com/iamtin/archive/2006/06/05/50596.html#Feedback8http://m.tkk7.com/iamtin/comments/commentRss/50596.htmlhttp://m.tkk7.com/iamtin/services/trackbacks/50596.htmlWebWork鐨剅esult瀹炵幇闈炲父瀹炵敤錛屽畠寰堝ソ鐨勮В鍐充簡View娓叉煋鐨勭伒媧繪ч棶棰樸傝繖鎵嶆槸MVC妯″紡鐨勪紭鍔挎墍鍦紝鑰屽儚JSF閭f牱甯畾JSP鐨凪VC灝卞悆涓嶅埌榪欎釜鐢滃ご浜嗐傝WebWork2鏄疢odel 2 MVC鐨勫穮宄板氨鍦ㄨ繖浜涚伒媧葷殑鍦版柟銆?br />闂叉壇榪欎釜涓嶆槸涓昏鐩殑銆傜幇鍦≧ome鏄疛ava涓嬫渶甯哥敤鐨凴SS鍖咃紝鏈榪戞秷鎭技涔庤杞叆Apache鐨凙bdera鍚堝茍鍙樻垚鏇村己澶х殑鑱氬悎寮曟搸銆傜敤Rome鐢熸垚鍜岃В鏋怰SS閮藉緢鏂逛究銆備粖澶╄璁轟竴涓嬩嬌鐢≧OME緇欑綉绔欑敓鎴怰SS錛屽茍閫氳繃WebWork2鐨凴esult鏈哄埗娓叉煋銆?br />鏈鍒濇槸浠嶹ebWork鐨凜ookbook涓婄湅鍒扮殑RomeResult鐨勬枃绔狅紝涓鐪嬪氨浼氾紝鎴戣繖閲屽叾瀹炰笉榪囨槸涓句釜璇︾粏鐐圭殑渚嬪瓙錛屾敞鎰忔垜浣跨敤鐨勬槸WebWork 2.2.2鍜孯ome 0.8錛?br />http://wiki.opensymphony.com/display/WW/RomeResult
鍙傝冧簡鍜屼笢鐨勮繖綃嘊log錛屽埄鐢╮ome鍐檙ss feed鐢熸垚紼嬪簭錛?br />http://hedong.3322.org/newblog/archives/000051.html

棣栧厛鍒涘緩RomeResult綾伙細

/**
聽*聽
*/
package 聽com.goldnet.framework.webwork.result;

import 聽java.io.Writer;

import 聽org.apache.log4j.Logger;

import 聽com.opensymphony.webwork.ServletActionContext;
import 聽com.opensymphony.xwork.ActionInvocation;
import 聽com.opensymphony.xwork.Result;
import 聽com.sun.syndication.feed.synd.SyndFeed;
import 聽com.sun.syndication.io.SyndFeedOutput;

/**
聽*聽A聽simple聽Result聽to聽output聽a聽Rome聽SyndFeed聽object聽into聽a聽newsfeed.
聽*聽
@author 聽Philip聽Luppens
聽*聽
*/
public class 聽RomeResult聽 implements 聽Result聽{
private static final long 聽serialVersionUID聽 = - 6089389751322858939L ;

private 聽String聽feedName;

private 聽String聽feedType;

private final static 聽Logger聽logger聽 = 聽Logger.getLogger(RomeResult. class );

/*
聽聽*聽(non-Javadoc)
聽聽*聽
聽聽*聽@see聽com.opensymphony.xwork.Result#execute(com.opensymphony.xwork.ActionInvocation)
聽聽
*/
public void 聽execute(ActionInvocation聽ai)聽 throws 聽Exception聽{
聽聽
if 聽(feedName聽 == null )聽{
聽聽聽
// 聽ack,聽we聽need聽this聽to聽find聽the聽feed聽on聽the聽stack
聽聽聽logger
聽聽聽聽聽.error(
" Required聽parameter聽'feedName'聽not聽found.聽 "
聽聽聽聽聽聽聽
+ " Make聽sure聽you聽have聽the聽param聽tag聽set聽and聽 "
聽聽聽聽聽聽聽
+ " the聽static-parameters聽interceptor聽enabled聽in聽your聽interceptor聽stack. " );
聽聽聽
// 聽no聽point聽in聽continuing聽..
聽聽聽 return ;
聽聽}

聽聽
// 聽don't聽forget聽to聽set聽the聽content聽to聽the聽correct聽mimetype
聽聽ServletActionContext.getResponse().setContentType( " text/xml " );
聽聽
// 聽get聽the聽feed聽from聽the聽stack聽that聽can聽be聽found聽by聽the聽feedName
聽聽SyndFeed聽feed聽 = 聽(SyndFeed)聽ai.getStack().findValue(feedName);

聽聽
if 聽(logger.isDebugEnabled())聽{
聽聽聽logger.debug(
" Found聽object聽on聽stack聽with聽name聽' " + 聽feedName聽 + " ':聽 "
聽聽聽聽聽
+ 聽feed);
聽聽}
聽聽
if 聽(feed聽 != null )聽{

聽聽聽
if 聽(feedType聽 != null )聽{
聽聽聽聽
// 聽Accepted聽types聽are:聽rss_0.90聽-聽rss_2.0聽and聽atom_0.3
聽聽聽聽
// 聽There聽is聽a聽bug聽though聽in聽the聽rss聽2.0聽generator聽when聽it聽checks
聽聽聽聽
// 聽for聽the聽type聽attribute聽in聽the聽description聽element.聽It's聽has聽a
聽聽聽聽
// 聽big聽'FIXME'聽next聽to聽it聽(v.聽0.7beta).
聽聽聽聽feed.setFeedType(feedType);
聽聽聽}
聽聽聽SyndFeedOutput聽output聽
= new 聽SyndFeedOutput();
聽聽聽
// we'll聽need聽the聽writer聽since聽Rome聽doesn't聽support聽writing聽to聽an聽outputStream聽yet
聽聽聽Writer聽out聽 = null ;
聽聽聽
try 聽{
聽聽聽聽out聽
= 聽ServletActionContext.getResponse().getWriter();
聽聽聽聽output.output(feed,聽out);
聽聽聽}聽
catch 聽(Exception聽e)聽{
聽聽聽聽
// 聽Woops,聽couldn't聽write聽the聽feed聽?
聽聽聽聽logger.error( " Could聽not聽write聽the聽feed " ,聽e);
聽聽聽}聽
finally 聽{
聽聽聽聽
// close聽the聽output聽writer聽(will聽flush聽automatically)
聽聽聽聽 if 聽(out聽 != null )聽{
聽聽聽聽聽out.close();
聽聽聽聽}
聽聽聽}

聽聽}聽
else 聽{
聽聽聽
// 聽woops聽..聽no聽object聽found聽on聽the聽stack聽with聽that聽name聽?
聽聽聽logger.error( " Did聽not聽find聽object聽on聽stack聽with聽name聽' " + 聽feedName
聽聽聽聽聽
+ " ' " );
聽聽}
聽}

public void 聽setFeedName(String聽feedName)聽{
聽聽
this .feedName聽 = 聽feedName;
聽}

public void 聽setFeedType(String聽feedType)聽{
聽聽
this .feedType聽 = 聽feedType;
聽}

}

紼嬪簭寰堢畝鍗曘傚疄鐜頒簡Result鎺ュ彛錛屽鎵句竴涓笌feedName鍙傛暟鍖歸厤鐨凷yndFeed瀹炰緥錛岀劧鍚庤漿鎹負鎸囧畾鐨刦eedType綾誨瀷錛岀劧鍚庨氳繃rome鐨凷yndFeedOutput杈撳嚭鍒癛esponse鍘匯?br />鐒跺悗鎴戜滑緇欐垜浠殑WebWork閰嶇疆romeResult銆?br />鍦▁work.xml涓厤緗細

< package聽 name ="default" 聽extends ="webwork-default" >
聽聽
< result-types >
聽聽聽
< result-type聽 name ="feed" 聽class ="com.goldnet.framework.webwork.result.RomeResult" />
聽聽
</ result-types >
聽聽
< interceptors >
聽聽
<!-- 聽鐒跺悗鏄綘鐨勯偅浜沬nteceptor閰嶇疆絳壜?/span> -->

榪欐牱鎴戜滑灝辯粰xwork閰嶇疆浜嗕竴涓彨鍋歠eed鐨剅esult錛屽畠灝辨槸鎴戜滑鐨剅omeResult銆?br />鐒跺悗鎴戜滑瀹炵幇涓涓被錛屾潵嫻嬭瘯涓涓嬭繖涓猺omeResult銆?br />

/**
聽*
*/
package 聽com.goldnet.webwork.action.news;

import 聽com.opensymphony.xwork.ActionSupport;

import 聽com.sun.syndication.feed.synd.SyndCategory;
import 聽com.sun.syndication.feed.synd.SyndCategoryImpl;
import 聽com.sun.syndication.feed.synd.SyndContent;
import 聽com.sun.syndication.feed.synd.SyndContentImpl;
import 聽com.sun.syndication.feed.synd.SyndEntry;
import 聽com.sun.syndication.feed.synd.SyndEntryImpl;
import 聽com.sun.syndication.feed.synd.SyndFeed;
import 聽com.sun.syndication.feed.synd.SyndFeedImpl;

import 聽org.apache.commons.logging.Log;
import 聽org.apache.commons.logging.LogFactory;

import 聽java.util.ArrayList;
import 聽java.util.Date;
import 聽java.util.List;


/**
聽*聽
@author 聽Tin
聽*
*/
public class 聽TestFeedCreateAction聽 extends 聽ActionSupport聽{
聽聽聽聽
private static final long 聽serialVersionUID聽 = - 2207516408313865979L ;
聽聽聽聽
private transient final 聽Log聽log聽 = 聽LogFactory.getLog(TestFeedCreateAction. class );
聽聽聽聽
private int 聽maxEntryNumber聽 = 25 ;
聽聽聽聽
private 聽String聽siteUrl聽 = " http://127.0.0.1 " ;
聽聽聽聽
private 聽SyndFeed聽feed聽 = null ;

聽聽聽聽
public 聽TestFeedCreateAction()聽{
聽聽聽聽聽聽聽聽
super ();
聽聽聽聽}

聽聽聽聽@Override
聽聽聽聽
public 聽String聽execute()聽{
聽聽聽聽聽聽聽聽List
< News > 聽newsList聽 = 聽getNewsList();

聽聽聽聽聽聽聽聽
if 聽(log.isDebugEnabled())聽{
聽聽聽聽聽聽聽聽聽聽聽聽log.debug(
" Geting聽feed!聽and聽got聽news聽 " + 聽newsList.size()聽 +
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
" 聽pieces. " );
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽feed聽
= new 聽SyndFeedImpl();

聽聽聽聽聽聽聽聽feed.setTitle(converttoISO(
" 嫻嬭瘯涓殑鏂伴椈緋葷粺 " ));
聽聽聽聽聽聽聽聽feed.setDescription(converttoISO(
" 嫻嬭瘯涓殑鏂伴椈緋葷粺錛氭祴璇昍ome聽Result " ));
聽聽聽聽聽聽聽聽feed.setAuthor(converttoISO(
" 嫻嬭瘯Tin " ));
聽聽聽聽聽聽聽聽feed.setLink(
" http://www.justatest.cn " );

聽聽聽聽聽聽聽聽List
< SyndEntry > 聽entries聽 = new 聽ArrayList < SyndEntry > ();
聽聽聽聽聽聽聽聽feed.setEntries(entries);

聽聽聽聽聽聽聽聽
for 聽(News聽news聽:聽newsList)聽{
聽聽聽聽聽聽聽聽聽聽聽聽SyndEntry聽entry聽
= new 聽SyndEntryImpl();
聽聽聽聽聽聽聽聽聽聽聽聽entry.setAuthor(converttoISO(news.getAuthor()));

聽聽聽聽聽聽聽聽聽聽聽聽SyndCategory聽cat聽
= new 聽SyndCategoryImpl();
聽聽聽聽聽聽聽聽聽聽聽聽cat.setName(converttoISO(news.getCategory()));

聽聽聽聽聽聽聽聽聽聽聽聽List
< SyndCategory > 聽cats聽 = new 聽ArrayList < SyndCategory > ();
聽聽聽聽聽聽聽聽聽聽聽聽cats.add(cat);
聽聽聽聽聽聽聽聽聽聽聽聽entry.setCategories(cats);

聽聽聽聽聽聽聽聽聽聽聽聽SyndContent聽content聽
= new 聽SyndContentImpl();
聽聽聽聽聽聽聽聽聽聽聽聽content.setValue(converttoISO(news.getContent()));

聽聽聽聽聽聽聽聽聽聽聽聽List
< SyndContent > 聽contents聽 = new 聽ArrayList < SyndContent > ();
聽聽聽聽聽聽聽聽聽聽聽聽contents.add(content);
聽聽聽聽聽聽聽聽聽聽聽聽entry.setContents(contents);
聽聽聽聽聽聽聽聽聽聽聽聽entry.setDescription(content);
聽聽聽聽聽聽聽聽聽聽聽聽entry.setLink(siteUrl聽
+ " /common/news/displayNews.action?id= " +
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽news.getId());
聽聽聽聽聽聽聽聽聽聽聽聽entry.setTitle(converttoISO(news.getTitle()));
聽聽聽聽聽聽聽聽聽聽聽聽entry.setPublishedDate(news.getPublishDate());
聽聽聽聽聽聽聽聽聽聽聽聽entries.add(entry);
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
return 聽SUCCESS;
聽聽聽聽}

聽聽聽聽
private static 聽String聽converttoISO(String聽s)聽{
聽聽聽聽聽聽聽聽
try 聽{
聽聽聽聽聽聽聽聽聽聽聽聽
byte []聽abyte0聽 = 聽s.getBytes( " UTF-8 " );

聽聽聽聽聽聽聽聽聽聽聽聽
return new 聽String(abyte0,聽 " ISO-8859-1 " );
聽聽聽聽聽聽聽聽}聽
catch 聽(Exception聽exception)聽{
聽聽聽聽聽聽聽聽聽聽聽聽
return 聽s;
聽聽聽聽聽聽聽聽}
聽聽聽聽}

聽聽聽聽
private 聽List < News > 聽getNewsList()聽{
聽聽聽聽聽聽聽聽List
< News > 聽newsList聽 = new 聽ArrayList < News > ();

聽聽聽聽聽聽聽聽
for 聽( int 聽i聽 = 0 ;聽i聽 < 聽maxEntryNumber;聽i ++ )聽{
聽聽聽聽聽聽聽聽聽聽聽聽News聽news聽
= new 聽News();
聽聽聽聽聽聽聽聽聽聽聽聽news.setTitle(
" 嫻嬭瘯鏍囬 " + 聽i);
聽聽聽聽聽聽聽聽聽聽聽聽news.setContent(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
" <p>嫻嬭瘯鍐呭嫻嬭瘯鍐呭<span聽style=\ " color:red\ " >嫻嬭瘯鍐呭</span></p> " );
聽聽聽聽聽聽聽聽聽聽聽聽news.setPublishDate(
new 聽Date());
聽聽聽聽聽聽聽聽聽聽聽聽news.setId(
new 聽Long(i));
聽聽聽聽聽聽聽聽聽聽聽聽news.setAuthor(
" Tin " );
聽聽聽聽聽聽聽聽聽聽聽聽newsList.add(news);
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
return 聽newsList;
聽聽聽聽}

聽聽聽聽
/**
聽聽聽聽聽*聽
@return 聽Returns聽the聽maxEntryNumber.
聽聽聽聽聽
*/
聽聽聽聽
public long 聽getMaxEntryNumber()聽{
聽聽聽聽聽聽聽聽
return 聽maxEntryNumber;
聽聽聽聽}

聽聽聽聽
/**
聽聽聽聽聽*聽
@param 聽maxEntryNumber聽The聽maxEntryNumber聽to聽set.
聽聽聽聽聽
*/
聽聽聽聽
public void 聽setMaxEntryNumber( int 聽maxEntryNumber)聽{
聽聽聽聽聽聽聽聽
this .maxEntryNumber聽 = 聽maxEntryNumber;
聽聽聽聽}

聽聽聽聽
/**
聽聽聽聽聽*聽
@param 聽siteUrl聽The聽siteUrl聽to聽set.
聽聽聽聽聽
*/
聽聽聽聽
public void 聽setSiteUrl(String聽siteUrl)聽{
聽聽聽聽聽聽聽聽
this .siteUrl聽 = 聽siteUrl;
聽聽聽聽}

聽聽聽聽
/**
聽聽聽聽聽*聽
@return 聽Returns聽the聽feed.
聽聽聽聽聽
*/
聽聽聽聽
public 聽SyndFeed聽getFeed()聽{
聽聽聽聽聽聽聽聽
return 聽feed;
聽聽聽聽}

聽聽聽聽
private class 聽News聽{
聽聽聽聽聽聽聽聽
private 聽Long聽id;
聽聽聽聽聽聽聽聽
private 聽String聽title;
聽聽聽聽聽聽聽聽
private 聽String聽content;
聽聽聽聽聽聽聽聽
private 聽Date聽publishDate;
聽聽聽聽聽聽聽聽
private 聽String聽author;
聽聽聽聽聽聽聽聽
private 聽String聽category;

聽聽聽聽聽聽聽聽
/**
聽聽*聽Getter/Setter閮界渷鐣ヤ簡錛屼嬌鐢ㄤ簡鍐呴儴綾伙紝灝辨槸鍥句釜鏂逛究
聽聽*聽鏈剰鏄ā浠挎垜浠父甯鎬嬌鐢ㄧ殑Pojo錛屽ぇ瀹剁殑瀹炵幇閮戒笉涓鏍鳳紝鎴戠獊綆鍗曪紝閲岄潰鍏跺疄鍙互鏈夊鏉傜被鍨嬬殑
聽聽
*/
聽聽聽聽}
}

鐪熸槸涓嶅ソ鎰忔濓紝Getter/Setter鍗犱簡澶ч儴鍒嗗湴鏂規垜鐪佺暐鍘諱簡銆傞昏緫寰堢畝鍗曪紝灝辨槸鎶婃垜浠殑POJO褰卞皠鍒癋eed鐨勬ā鍨嬩笂闈紝榪囩▼寰堢畝鍗曘傛垜鐣欎笅浜嗗嚑涓弬鏁板彲浠ュ湪澶栭潰璁劇疆錛?br />maxEntryNumber鏄劇ず鐨刦eed鐨勬潯鏁幫紝閾炬帴鐢熸垚鏃朵嬌鐢ㄧ殑SiteUrl錛屽綋鐒朵篃鍙互閫氳繃request鑾峰彇銆?br />涓嬮潰鎴戜滑閰嶇疆鎴戜滑鐨凙ction錛屾敞鎰忓鉤鏃舵垜浠彲鑳戒嬌鐢―AO鐢熸垚newsList錛岃屼笉鏄垜榪欎釜鍐欐鐨刧etNewsList()鏂規硶錛屾鏃跺彲鑳介渶瑕侀厤鍚圫pring榪涜IOC鐨勮緗紝鎴戜滑榪欓噷鐪佺暐鎺夈?br />涓嬮潰鏄垜浠繖涓狝ction鐨剎work閰嶇疆錛?/p>

< package聽 name ="news" 聽extends ="default" 聽namespace ="/news" >
聽聽
< action聽 name ="feed" 聽class ="com.goldnet.webwork.action.news.TestFeedCreateAction" >
聽聽聽
<!-- 聽姣忔鐢熸垚15鏉ss聽feed聽 -->
聽聽聽
< param聽 name ="maxEntryNumber" > 15 </ param >
聽聽聽
<!-- 聽閾炬帴鐨勫墠緙錛屾垜浠嬌鐢╓eblogic鏄?001錛屼篃璁鎬綘鐨勬槸8080聽 -->
聽聽聽
< param聽 name ="siteUrl" > http://127.0.0.1:7001 </ param >
聽聽聽
<!-- 聽result鏄痜eed聽 -->
聽聽聽
< result聽 name ="success" 聽type ="feed" >
聽聽聽聽
<!-- 聽feed鍚嶅瓧鏄痜eed錛屽搴旀垜浠繖涓狝ction涓殑閭d釜SyndFeed鐨勫疄渚嬬殑鍚嶅瓧feed錛屽埆蹇樿鍐檊etter聽 -->
聽聽聽聽
< param聽 name ="feedName" > feed </ param >
聽聽聽聽
<!-- 聽鍒跺畾鐢熸垚鐨刦eed鐨勭被鍨嬶紝鎴戣繖閲岄夋嫨rss_2.0聽 -->
聽聽聽聽
<!-- 聽rome聽0.8鏀寔atom_0.3銆乤tom_1.0銆乺ss_1.0銆乺ss_2.0銆乺ss_0.90銆乺ss_0.91銆乺ss_0.91銆乺ss_0.91U銆乺ss_0.92銆乺ss_0.93銆乺ss_0.94聽 -->
聽聽聽聽
< param聽 name ="feedType" > rss_2.0 </ param >
聽聽聽
</ result >
聽聽
</ action >
</ package >

OK錛岄厤緗畬姣曞悗璁塊棶/news/feed.action灝卞彲浠ヨ闂埌榪欎釜feed浜嗐傚掑叆浣犵殑feedDeamon錛岀湅鐪嬶紝鏄笉鏄潪甯哥畝鍗曪紵
涓嶈繃闇瑕佽冭檻涓や釜鍦版柟錛屼竴涓槸緙栫爜闂錛岀湅浜嗗拰涓滆鐨勪腑鏂囬棶棰橈紝鏈病褰撳洖浜嬶紝緇撴灉鐢熸垚涔辯爜錛堟垜浠」鐩叏閮ㄤ嬌鐢║TF-8錛夛紝鐒跺悗榪樻槸杞簡涓涓嬨傛病鏈夌爺絀禦OME婧愪唬鐮侊紝鎰熻xml涓嶅簲璇ユ湁UTF-8榪樹細涔辯爜鐨勯棶棰樺憖錛屼篃璁歌繕闇瑕佺湅鐪嬫槸鍚︽槸璁劇疆涓嶅埌浣嶃傝繕鏈夊氨鏄浜巉eed濡傛灉澧炲姞浜嗘潈闄愯璇佸垯璁塊棶姣旇緝楹葷儲錛岀敤feedDeamon榪欐牱鐨勫鎴風灝辨棤娉曡闂埌浜嗭紝鍥犱負瀹冧笉浼氭樉紺虹櫥闄嗗け璐ュ悗鏄劇ず鐨勭櫥闄嗛〉闈紝涔熻鏀緁eed灝辮寮鏀句竴鐐瑰惂錛堝綋鐒惰繕鏄湁鍙橀氭斁妗堢殑錛夈?br />鍜屽姩渚嬪瓙閲岄潰鐨剅ome 0.7鍜岀幇鍦ㄧ殑rome 0.8鐩告瘮錛孉pi宸茬粡鍙戠敓浜嗕笉灝戝彉鍖栵紝鍞夛紝寮婧愯浠g爜紼沖畾榪樼湡闅俱?br />灝辮繖浜涳紝灝卞埌榪欓噷錛岀矖闄嬩簡:D



Tin 2006-06-05 22:25 鍙戣〃璇勮
]]>
WebWork 2.2.2涓枃涓婁紶涔辯爜闂[涓存椂瑙e喅鏂規] http://m.tkk7.com/iamtin/archive/2006/03/30/38365.htmlTinTinThu, 30 Mar 2006 13:40:00 GMThttp://m.tkk7.com/iamtin/archive/2006/03/30/38365.htmlhttp://m.tkk7.com/iamtin/comments/38365.htmlhttp://m.tkk7.com/iamtin/archive/2006/03/30/38365.html#Feedback10http://m.tkk7.com/iamtin/comments/commentRss/38365.htmlhttp://m.tkk7.com/iamtin/services/trackbacks/38365.html浣跨敤jakarta commons-upload銆?
鍗囩駭鍒?.2.2鍚庡彂鐜頒笂浼犱腑鏂囦細涔辯爜銆?
緇忚繃璺熻釜鍙戠幇鍦╟om.opensymphony.webwork.dispatcher.DispatcherUtils鐨刾repare(HttpServletRequest request, HttpServletResponse response)鏂規硶銆?
2.2.1->2.2.2鏃惰繖涓柟娉曞彂鐢熶簡闈炲父鐨勭殑鍙樺寲銆?
2.2.1鏃訛細聽
publicvoid聽prepare(HttpServletRequest聽request,聽HttpServletResponse聽response)聽{聽
聽聽聽聽聽聽聽聽
if聽(encoding聽!=null)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽
try聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽request.setCharacterEncoding(encoding);聽
聽聽聽聽聽聽聽聽聽聽聽聽}聽
catch聽(Exception聽e)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽LOG.error(
"Error聽setting聽character聽encoding聽to聽'"+聽encoding聽+"'聽-聽ignoring.",聽e);聽
聽聽聽聽聽聽聽聽聽聽聽聽}聽
聽聽聽聽聽聽聽聽}聽

聽聽聽聽聽聽聽聽
if聽(locale聽!=null)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽response.setLocale(locale);聽
聽聽聽聽聽聽聽聽}聽

聽聽聽聽聽聽聽聽
if聽(paramsWorkaroundEnabled)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽request.getParameter(
"foo");聽//聽simply聽read聽any聽parameter聽(existing聽or聽not)聽to聽"prime"聽the聽request聽
聽聽聽聽聽聽聽聽}聽
聽聽聽聽}

2.2.2鏃訛細
publicvoid聽prepare(HttpServletRequest聽request,聽HttpServletResponse聽response)聽{聽
聽聽聽聽聽聽聽聽String聽encoding聽
=null;聽
聽聽聽聽聽聽聽聽
if聽(Configuration.isSet(WebWorkConstants.WEBWORK_I18N_ENCODING))聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽encoding聽
=聽Configuration.getString(WebWorkConstants.WEBWORK_I18N_ENCODING);聽
聽聽聽聽聽聽聽聽}聽

聽聽聽聽聽聽聽聽Locale聽locale聽
=null;聽
聽聽聽聽聽聽聽聽
if聽(Configuration.isSet(WebWorkConstants.WEBWORK_LOCALE))聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽locale聽
=聽LocalizedTextUtil.localeFromString(Configuration.getString(WebWorkConstants.WEBWORK_LOCALE),聽request.getLocale());聽
聽聽聽聽聽聽聽聽}聽

聽聽聽聽聽聽聽聽
if聽(encoding聽!=null&&!MultiPartRequest.isMultiPart(request))聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽
try聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽request.setCharacterEncoding(encoding);聽
聽聽聽聽聽聽聽聽聽聽聽聽}聽
catch聽(Exception聽e)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽LOG.error(
"Error聽setting聽character聽encoding聽to聽'"+聽encoding聽+"'聽-聽ignoring.",聽e);聽
聽聽聽聽聽聽聽聽聽聽聽聽}聽
聽聽聽聽聽聽聽聽}聽

聽聽聽聽聽聽聽聽
if聽(locale聽!=null)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽response.setLocale(locale);聽
聽聽聽聽聽聽聽聽}聽

聽聽聽聽聽聽聽聽
if聽(paramsWorkaroundEnabled)聽{聽
聽聽聽聽聽聽聽聽聽聽聽聽request.getParameter(
"foo");聽//聽simply聽read聽any聽parameter聽(existing聽or聽not)聽to聽"prime"聽the聽request聽
聽聽聽聽聽聽聽聽}聽
聽聽聽聽}


鎴戠湅浜唈ira娌℃湁鍙戠幇encoding != null && !MultiPartRequest.isMultiPart(request)榪欎釜鍒ゆ柇鐨勬剰涔夈備絾鏄畠浼氶犳垚瀵筸ultiPartRequest鐨別ncoding鍒ゆ柇澶辮觸錛屼腑鏂囧氨浼氫貢鐮併?
鎵浠ヤ復鏃剁殑瑙e喅鏂規鏄皢鍒ゆ柇鏀規垚錛?
if (encoding != null)

鍚WW鐨凧ira宸茬粡涓嶆帴鍙楁柊issue浜嗭紝涓嶇煡鏄惁鐪熺殑錛?Crying or Very sad


Tin 2006-03-30 21:40 鍙戣〃璇勮
]]>
Java Web 妗嗘灦鐨勨滅敎鐐光?/title><link>http://m.tkk7.com/iamtin/archive/2006/03/30/WebFrameworkSweetSpots.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Thu, 30 Mar 2006 08:28:00 GMT</pubDate><guid>http://m.tkk7.com/iamtin/archive/2006/03/30/WebFrameworkSweetSpots.html</guid><wfw:comment>http://m.tkk7.com/iamtin/comments/38276.html</wfw:comment><comments>http://m.tkk7.com/iamtin/archive/2006/03/30/WebFrameworkSweetSpots.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/iamtin/comments/commentRss/38276.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/iamtin/services/trackbacks/38276.html</trackback:ping><description><![CDATA[ <p> <font size="6"> <strong>Jave Web Framework Sweet Spots</strong> </font> <br /> <font size="5"> <strong>Java Web 妗嗘灦鐨勨滅敎鐐光?/strong> </font> </p> <p>榪欐槸涓綃囧緢鏈夎叮鐨勬枃妗o紝鎵浠ユ憳瑕佷竴涓嬶紝鍏跺疄綾諱技闃呰絎旇錛屽ソ鍍忔槸3/25鍙戝竷鐨勶細</p> <p>涓嶇煡鎬庝箞緲昏瘧Sweet Spots錛岄毦閬撶炕璇戜負鐢滃銆佺敎澶淬佽湝鐐廣佽湝絀達紵</p> <p>榪欐椂鍩轟簬瀵逛互涓嬩漢鐨勯噰璁匡細<br />JSF聽聽Jacob Hookom<br />RIFE聽聽Geert Bevin<br />Seam聽聽Gavin King<br />Spring MVC聽Rob Harrop<br />Spring Web Flow聽Rob Harrop and Keith Donald<br />Stripes聽聽Tim Fennell<br />Struts Action 1聽Don Brown<br />Tapestry聽Howard Lewis Ship<br />Trails聽聽Chris Nelson<br />WebWork聽聽Patrick Lightbody<br />Wicket聽聽Eelco Hillenius</p> <p>鍘熸枃鍦ㄦ錛?a >http://www.virtuas.com/articles/webframework-sweetspots.html</a></p> <p> <font size="6"> <strong> <font size="5">JSF(Jacob Hookom)</font> <br /> </strong> </font>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵<br />褰撲綘甯屾湜嫻忚鍣ㄧ▼搴忓儚妗岄潰紼嬪簭涓鏍峰伐浣滅殑鏃跺欙紝浣犲彲浠ラ伒寰爣鍑嗗茍鑾峰緱澶ч噺絎笁鏂規敮鎸併傚畠鑷村姏浜庨檷浣庡鏉傚害銆傚畠鍏佽浣犱笉涓巚iew鍜岀壒瀹氱殑action銆佸弬鏁頒紶閫掋佺姸鎬佷紶閫掋佹覆鏌撴墦浜ら亾灝卞彲浠ヨ繘琛岄珮璐ㄩ噺鐨勫紑鍙戯紝涓嶇鏄惁浣跨敤宸ュ叿銆?br />2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵<br />瀹冧笉閫傚悎澶ц妯$殑銆佸彧璇伙紙鍏跺疄鎸囪涓轟富錛夌殑緗戠珯銆傚湪榪欑鎯呭喌鎺ㄨ崘Struts錛屽洜涓虹煡璇嗗簱涓板瘜錛堝簲璇ユ寚鏂囨。鍜岀敤鎴風兢錛夈?br />3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?br />Seam錛?br />浼樼偣錛氶潪甯哥畝鍗曠洿鎺?br />緙虹偣錛氬浜庡ぇ欏圭洰榪囦簬綆鍗曪紱娌℃湁妯″潡鍖栧紑鍙戠殑濂戒緥瀛?br />Struts錛?br />浼樼偣錛氬法澶х殑鏂囨。鍜岀敤鎴風兢錛涜窡鐫瀹冩病閿?br />緙虹偣錛氱姸鎬?琛屼負鐨勫垎紱昏繃浜庢暀鏉″寲<br />WebWork錛?br />浼樼偣錛氭瘮Struts鏄撲簬浣跨敤<br />緙虹偣錛氬鏉傜殑UI闅句簬緇存姢錛孶I浠g爜榪囦簬澶嶆潅錛圝SF浣滆呭action Framework閮芥敾鍑昏繖涓鐐癸級<br />Tapestry錛?br />浼樼偣錛氭蹇墊柊棰栵紱鍙互搴斾粯澶嶆潅鐨刄I<br />緙虹偣錛氬浜庝竴涓粍浠跺寲錛圝SF涓昏绔炰簤瀵規墜錛夛紝瀹冧緷鐒朵緷闄勪簬page/action鐨勬蹇?br />4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵<br />浠栬涓篔SF榪欎釜鏍囧噯涓嬭繖浜涘簲璇ユ湁絎笁鏂規彁渚涖侸SF(2.0)浼氭彁渚涒淧artial Faces Request鈥濓紝瀹冩槸Ajax瀹炵幇銆侸SF涔熶細澧炲己annotation緇勫緩緙栫▼銆?br />5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?br />寰堝JSF涔﹂兘鎷縎truts浣滀負瀵規瘮銆備粬璁や負榪欎笉鑳戒綋鐜癑SF鐨勭壒鐐廣備粬璁や負Struts鍜學ebWork鑳藉仛鍒扮殑JSF涔熻兘鍋氬埌銆?br />6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵<br />瀹冧笌WebWork涓鏍峰ソ鐢紝瀹冪殑CoC錛圕onvention over Configration錛夊拰鑴氭墜鏋墮潪甯稿ソ鐢ㄣ備粬璁や負CoC鍙互琚簲鐢ㄥ湪浠諱綍framework錛屼粬璁や負榪欐槸RoR鏈澶х殑浼樼偣銆備粬榪樿涓篟oR浼氳蛋涓婂叾瀹僨ramework鐨勮礬錛堝鏉傛х瓑錛夛紝鍥犱負浜轟滑闇瑕佽嚜宸辯殑鎵╁睍銆?/p> <p> <font size="5"> <strong>RIFE(Geert Bevin)</strong> <br /> </font> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />浣犲彲浠ヤ粯鍑?0%鐨勫伐浣滈噺錛屽緱鍒板叾瀹僨ramework鐨?0%鐨勨︹︼紝瀹冩槸涓涓猣ull-stack framework錛堝RoR錛夈傚畠鍚告敹浜嗘垚鐔熺殑鍒嗗眰妗嗘灦鐨勬灦鏋勶紝騫跺皢鍏卞悓鐨勪紭鐐規眹闆嗗湪涓璧楓傛彁渚涗簡web continuation錛孭OJO椹卞姩鐨凜RUD鐢熸垚錛屽彲鎵╁睍鐨勫熀浜庣粍寤虹殑鏋舵瀯錛屾棤session鐨勭姸鎬佹帶鍒訛紝鍏蟲敞REST浣滀負API錛屽弻鍚戞棤閫昏緫妯$増寮曟搸錛岄泦鎴愪簡鍐呭鎺у埗妗嗘灦錛圕MS錛燂級銆傛瘡涓眰嬈$殑緇勫緩鎻愪緵浜嗗彲澶嶇敤鎬э紙AOP錛宻ite錛宻ub-site錛宲age錛寃idget錛宲ortlet絳夛級銆傞傚悎浜庡洟闃熷揩閫熷紑鍙戝叕鍏盬eb欏圭洰錛岄傚悎鍠滄寮鍙戝彲澶嶇敤緇勪歡鐨勪漢銆?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />鍥㈤槦涓殑姣忎釜浜洪兘鏈夊叾瀹僨ramework鐨勭煡璇嗭紝闅句簬鍩硅浠栦滑銆傚紑鍙戠姸鎬佺浉鍏崇殑鏈嶅姟鍣ㄧWeb緇勪歡錛岃屼笉鏄敤RIA鎴朅jax鍘誨疄鐜般傜涓夋柟鏀寔寰堥噸瑕佺殑鎯呭喌涓嬶紙鍙淩IFE鐢ㄦ埛緹よ繕涓嶅ぇ錛夈備粬鎺ㄨ崘榪欑鎯呭喌涓嬩嬌鐢↗SF銆傛垨鑰呭湪XML涓轟富瑕佸彂甯冨艦寮忕殑鎯呭喌涓嬶紝鎺ㄨ崘Cocoon銆?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />浠栬瘯楠岃繃WebWork錛孞SF錛學icket銆備粬鍠滄WebWork鐨勭畝鍗曪紝浣嗘槸涓嶅枩嬈㈠畠鐨勬ā鐗堟柟寮忥紙tag鐨則emplate錛屽簲璇ワ級錛屽畠涔熶笉鎻愪緵緇勪歡灝佽銆備粬璁や負JSF鐨勫伐鍏鋒敮鎸侀潪甯稿惛寮曚漢銆俉icket鐨勭函Java瀹炵幇寰堜笉閿欙紝鍙儨XML閰嶇疆寰堜笉鐖姐?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />鍏充簬Ajax錛孯IFE鍒氬垰闆嗘垚浜咲WR錛岃屼笖閫夊畾浠ュ悗涔熶嬌鐢ㄨ繖涓傞泦鎴怐ojo錛孲criptaculous錛孭rototype閮藉緢瀹規槗闆嗘垚榪涙潵銆?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />榪欎簺閿欒鐞嗗康錛?銆丷IFE鐨刋ML閰嶇疆綣佺悙 2銆丷IFE鏄痗ontinuations server 3銆丷IFE閲嶆柊閫犺疆瀛愭病鏈夋彁渚涙柊椴滀笢瑗?4銆丷IFE鐨勬ā鐗堣娉曞緢韞╄剼榪囦簬綆鍗曞拰涓氫綑 5銆丷IFE鏄熀浜巖equest鐨刦ramework 6銆丷IFE鐨勫姛鑳藉お澶氾紝瀛︿範鏇茬嚎闄″抄<br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />RoR瀵笿ava紺懼尯鐨勫啿鍑婚潪甯告錛屽厓緙栨垚涔熷緱鍒頒簡淇′換銆俁oR娌′粈涔堢壒孌婁箣澶勶紝涔熸病鏈変粠Ruby璇█鑾風泭寰堝銆?br />鎴戣鍘岋細瀹冪殑妯$増銆侾artials錛圧oR涓殑緇勪歡錛夈俇RL鐨勫垎鏁e鐞嗐侫ctive Record鎻愪緵浜嗕粠鏁版嵁搴搒chema鑰屾潵鐨凞SL錛屼絾鏄嵈涓嶆槸浠巇omain model鑰屾潵銆傛病鏈塴10n鍜宨18n鏀寔銆傛墜鍔ㄧ姸鎬佽漿鎹€備笉鑳藉湪JVM榪愯錛堚︹︼級銆傚疄闄呬笂鑴氭墜鏋剁敓鎴愪簡瀹為檯浠g爜銆俁uby緙哄皯宸ュ叿鍜孖DE銆?/p> <p> <strong> <font size="6"> <font size="5">Seam(Gavin King)</font> <br /> </font>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />鎷ユ湁涓板瘜鐢ㄦ埛浜や簰浣撻獙鐨勫簲鐢ㄣ傛柟渚垮疄鐜板紿楀彛鐨勬搷浣滐紝鍥為鐨勬敮鎸侊紝鍗曠獥鍙e宸ヤ綔鍖猴紝鏃犵姸鎬佹祻瑙堛傚鍟嗗姟嫻佺▼錛圔PM錛夌殑闆嗘垚鏄嫭涓鏃犱簩鐨勩係eam鏂逛究浣跨敤鏁版嵁椹卞姩鐨凮RM銆傞伒寰狫SF鍜孍JB3錛屽浠誨姟鏀寔錛堝紿楀彛/澶氬伐浣滃尯錛夛紝BPM鐨勯鍏堣В鍐蟲柟妗堛?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />涓嶉傚悎鍙槸灝嗘暟鎹粠鏁版嵁搴撴樉紺哄埌緗戦〉鐨勫簲鐢紝榪欐椂搴旇浣跨敤PHP鎴朢oR銆備笉閫傚悎闇瑕佽璁$壒鍒殑HTML緇勪歡鐨勬儏鍐碉紝姝ゆ椂搴旇閫夌敤Tapestry鎴朩icket銆傝繕鍦ㄤ嬌鐢↗DK1.4鐨勪漢浠傝繕鏈夐偅浜涘枩嬈truts鐨勪漢錛堝樋鍢匡紝澶熺嫚錛夈?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />JSF錛氬枩嬈粬鐨勪簨浠?浜や簰妯″瀷銆傚枩嬈粬鐨凟L鍜屾ā鍨嬬粦瀹氥備笉鍠滄閭d箞澶歑ML錛堜負浠涔堟病鏈塧nnotation錛夈傚垱寤鴻嚜宸辯殑controls澶毦浜嗐?br />Tapestry錛氶潪甯稿ソ銆俧orm楠岃瘉鏄畠鐨勬潃鎵嬮攺錛佹ā鐗堟柟寮忓緢鏈夊垱鎰忋備笉榪囬潪鍩轟簬POJO鐨勭粍浠舵ā鍨嬪垯璁╂垜瀵瑰畠澶卞幓鍏磋叮銆?br />RIFE錛氳繖涓笢瑗垮緢鎬紝浣嗘槸鏈夊垱涓氫篃鏈夎叮銆傛垜鎯寵繘涓姝ュ涔犮傚鏋滃涔犲厛瑕佽嚜璐規鍔?D<br />Struts錛氳繖涓笢瑗跨殑妯″瀷view緇戝畾澶鏉備簡銆備笢瑗垮凡緇忚繃鏃朵簡銆?br />WebWork錛氭瘮Struts濂戒竴鐐癸紝涓嶈繃涔熻繃鏃朵簡銆俋Work鏇劇粡鏄釜寰堝ソ鐨勫疄鐜幫紝涓嶈繃鐜板湪涔熻繃鏃朵簡銆?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />Portal鏀寔銆傝繙紼嬫鏋禨eam Remoting Framework錛圓jax錛夈傛ā鐗堟秷鎭殑宸ュ叿鏀寔銆備互鍚庤繕瑕侀泦鎴怑SB錛岃鍒掑紩鎿庡拰寮傛鏀寔銆?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />榪欎簺閮戒笉鏄湡鐨勶細JSF涓嶈兘澶勭悊GET requests銆侸SF post鍚庢棤娉時edirect銆侸SF涓嶈兘涓嶳EST鍏卞瓨銆?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />瀹冩槸PHP鐨勫緢濂芥浛浠e搧銆傚鏋滃畠鏈変竴涓緇忎竴鐐圭殑鎸佷箙鍖栧眰瀹冨氨鍙互鍜孞ava绔炰簤浜嗐?/p> <p> <font size="6"> <strong> <font size="5">Spring MVC(Rob Harrop)鍜孲pring Web Flow(Rob Harrop and Keith Donald)</font> </strong> </font> <br /> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />Spring MVC錛?br />紼沖畾鍙墿灞曪紝鏀寔浜唅18n銆佹枃浠朵笂浼犮佸紓甯稿鐞嗭紝榪欎簺紼沖畾鐨勬敮鎸佺粰寮鍙戣呭潥瀹炵殑宸ヤ綔鍩虹銆傛槸鏈浣沖疄璺碉紝鍛婅瘔浣犳庝箞鍋氭槸鏈濂界殑銆備笌Spring闆嗘垚錛岄鍏堢殑IoC榪滅敓鏀寔銆傛敮鎸侊紝Spring紺懼尯媧昏穬鍜屽簽澶с係truts寮鍙戣呭彲浠ュ鉤婊戣繃娓°傞傚悎澶氱欏圭洰錛屽彲閫夌殑澶氱result綾誨瀷銆?br />Spring Web Flow錛?br />鍐呯疆浠誨姟澶勭悊寮曟搸錛屾敮鎸佺嚎鎬у鐞嗚繃紼嬩腑鐨勬寔緇姸鎬併傛娊璞★紝鍑忓皯寮鍙戠殑鍏蟲敞鐐廣傞傚悎澶氱欏圭洰綾誨瀷錛屾彃浠舵敮鎸丼pring MVC銆丼truts銆丣SF絳夈?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />Spring MVC錛氫笉閫傚悎闇瑕佺粍浠跺寲寮鍙戠殑鍦烘櫙銆傚畠鏄竴涓猺equest椹卞姩鐨凪VC銆傞偅浜涘満鏅帹鑽怞SF鎴朤apestry銆?br />Spring Web Flow錛氬鐞嗙嚎鎬ч〉闈㈡祦錛屼笉閫傚悎涓鑸殑鈥滆嚜鐢辨祻瑙堚濄傚綋鐒禨pring Web Flow鍙互涓巖equest椹卞姩鎴栬呯粍浠墮┍鍔ㄥ叡瀛樸?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />Spring妗嗘灦鏀寔Struts鍜孞SF闆嗘垚銆?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />Spring MVC錛氱畝鍖朖SP鏍囩銆傛洿澶氱殑MVC閰嶇疆schema銆侰oC椋庢牸鐨勯粯璁ゆ帶鍒跺櫒銆乁RL褰卞皠銆乿iew錛屽涔燫ails鍜孲tripes鐨勪紭鐐廣傚寮烘暟鎹粦瀹氬拰楠岃瘉錛堟敮鎸佽寖鍨嬬粦瀹氾級銆侾ortlet鏀寔銆係pring涔熻鎺ュ彈Ajax錛屼嬌鐢―WR搴撱?br />Spring Web Flow錛氫竴澶у爢錛屽叧蹇冪殑鍙互鑷繁鐪嬧︹?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />Spring MVC闅句簬閰嶇疆銆傚湪Spring 2.0錛屽皢浼氭敼鍠勶紝鍙互浣跨敤鑷繁瀹氫箟鐨勫熀浜巗chema鐨勯厤緗?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />Spring MVC錛歊oR闈炲父鏈夎叮銆備笉榪囩幇鍦ㄥ氨鎷垮嚭鏉ョ敤榪樻湁鐐瑰辜紼氥傝繖閲屼婦浜嗕釜渚嬪瓙錛屽叧浜庡彉閲忕殑澶嶆暟褰㈠紡鐨勫鐞嗭紝RoR浼氫嬌鐢ㄨ繖鏍風殑CoC椋庢牸鏉ュ鐞嗗彉閲弆ist錛岃孲pring MVC涔熷疄楠屼簡縐嶇椋庢牸錛屼絾鏄彈鍒扮殑緇撴灉鍗村緢宸備漢浠涓鴻嫳璇殑澶嶆暟寰堝彜鎬紝娌℃湁涓瀹氱殑瑙勫垯錛屾墍浠ヤ細甯︽潵娣蜂貢錛屽錛坧erson -> people錛夈傛墍浠pring MVC璁捐浜嗗彉閲?List鐨勫懡鍚嶏紝personList鏇村姞鏄庣‘錛岃櫧鐒惰繖鏍蜂笉閰鳳紝浣嗘洿濂界敤銆傚氨鏄Spring MVC瑕佸彇鍏剁簿鍗庡幓鍏剁碂綺曘?/p> <p> <font size="6"> <strong> <font size="5">Stripes(Tim Fennell)</font> </strong> </font> <br /> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />涓嶴pring MVC銆乄ebWork絳夌浉鍚屻傚畠鎻愪緵楂樿川閲廰ction椹卞姩鐨勬鏋剁殑鍚屾椂錛屽敖閲忕畝鍖栭厤緗紝澧炶繘寮鍙戞晥鐜囥係tripes閫傚悎澶嶆潅鐨勬暟鎹氦浜掔殑鍦哄悎銆傝繖縐嶆儏鍐典笅緇戝畾楠岃瘉鐨勫己欏瑰氨瀹屽叏浣撶幇鍑烘潵浜嗭紝鑳藉寰堝ソ鐨勫鐞唂orm鍜宮ap杞崲絳夈?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />鎵鏈夌殑action椹卞姩鐨刦ramework閮介傚悎鐢ㄦ埛鍦ㄩ潪Ajax椹卞姩鐨勬儏鍐典笅鍦ㄤ竴涓〉闈㈣繘琛屾澗鍏寵仈錛坙oosely related錛夊拰鏃犵姸鎬佷氦浜掔殑鎯呭喌銆傞傚悎姣忔閮藉埛鏂扮殑欏甸潰銆傜鐞嗗紿楀彛闂存寔緇姸鎬佺殑搴旂敤浼氭瘮杈冮夯鐑︼紝姝ゆ椂搴旇閫夋嫨JSF銆備笉榪囨垜璁や負90%浠ヤ笂鐨刉eb紼嬪簭閮芥槸鍓嶈咃紝JSF鍙傚悎鍓╀笅鐨勯偅9%錛孉JAX瀵逛簬綆$悊鏃犵姸鎬乁I鏇村姞閫傚悎銆傚鎴風涓嶉渶瑕丄JAX錛屽垯鍙互鐪嬬湅Wicket錛屽畠鏇村姞綆鍗曘?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />鐢ㄨ繃Struts銆乄ebWork銆丼pring MVC銆傚叾涓璖truts鍋氳繃鍟嗕笟欏圭洰錛屼笉榪囪繖涓笢瑗垮甫鏉ョ殑楹葷儲榪滄瘮甯︽潵鐨勬晥鐜囨彁鍗囪澶氥傚畠璁や負榪欎簺MVC閮芥湁涓変釜緙虹偣錛氭毚闇蹭簡榪囧鐨勫鏉傛х粰鍙彂鑰呫傛病鏈夋彁渚涜凍澶熺殑寮鍙戜究鍒╂э紝娌℃湁鎻愪緵瓚沖澶氱殑閿欒鍜屾彁紺轟俊鎭紝涔熸病鏈塪ate鏍煎紡鍖栫瓑灝忕殑渚垮埄錛堝叾瀹炴湁錛夈傜ǔ褰撳お宸?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />1.3瑕佸姞鍏nteceptor錛屽疄鐜癆OP鍔熻兘銆傞獙璇佺郴緇熻鍔犲己銆傛敮鎸丄jax銆傛垜榪樺湪瀵繪壘涓涓ソ鐨凙jax/javascript搴撱?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />榪欎簺瑙傜偣錛?銆丼tripes浣跨敤浜哸nnotation浠f浛XML錛屽彧鏄崲姹や笉鎹㈣嵂錛氱敱浜庡厓鏁版嵁鏇存帴榪戜唬鐮侊紝鎵浠ヤ慨鏀歸粯璁ょ殑閰嶇疆闈炲父鏂逛究錛屼笉鍍廥ML閭f牱澶嶆潅錛岃繖鏄疄璐ㄧ殑鍙樺寲銆?銆丄nnotation鎰忓懗鐫浣犲彧鑳芥湁涓濂楅厤緗細鎴戣涓?0%鐨刟ction閮芥湁鑷繁鐨勪竴濂楅厤緗紒Stripes浼氭牴鎹戶鎵垮叧緋誨鎵続nnotations錛屽瓙綾葷殑annotation浼氳鐩栫埗綾葷殑錛屽洜涓哄儚validation閮芥槸鍙互緇ф壙鐨勶紝濡傛灉鐗瑰埆闇瑕佽繕鍙互瑕嗙洊銆傝繖鏍峰緢鍚堢悊銆傚湪1.3涓厑璁竩alidations鍩轟簬UI浜嬩歡榪涜銆傚畠鍚戝悗鍏煎錛屼笉闇瑕佸彲浠ヤ笉鐢ㄣ?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />鎴戣涓篔ava紺懼尯鏈夊緢澶氬彲浠ヤ粠RoR瀛︿範鐨勫湴鏂廣係tripes瀛︿範浜哛oR鐨勫墠绔儴鍒嗭紝寮鍙戣呭彲浠ュ噺灝戦厤緗噺銆備絾鏄疪oR鐨凴HTML璁╂垜鎯沖埌浜嗕互鍓嶇殑JSP涓販涔辯殑scriptlet銆傝屽悗闈㈢殑ActiveRecord鏄竴涓緢濂界殑鐞嗗康錛屽疄鐜扮殑涔熷緢濂姐侫ctiveRecord姣擧ibernate絳夊鏉傜殑ORM宸ュ叿瑕佸鏄撶悊瑙o紝鍥犱負榪欐牱鐨勭壒鐐筊oR鎵嶅紩璧蜂簡榪欎箞澶х殑娉㈡緶銆?/p> <p> <font size="5"> <strong>Struts Action 1(Don Brown)</strong> <br /> </font> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />鏂囨。鍜岀敤鎴峰熀紜錛屼功綾嶅拰鑳屽悗鐨勬敮鎸併傚鏄撻泧鍒頒漢錛堜篃瀹規槗鎵懼伐浣滐級銆傝櫧鐒跺叾浠栭」鐩殑鐞嗗康姣旇繖涓鍏堣繘錛屼絾鏄繖浜涗笉綆椾粈涔堛傚疄闄呬笂錛學eb灞傛槸寰堝鏄撲篃寰堢洿鎺ョ殑銆?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />濡傛灉浣犻渶瑕乸ortlets鎴栬呭鏉傜殑欏甸潰錛堟樉紺哄緢澶氫笢瑗匡級錛岄偅涔圫truts瑕佷箞鏃犳硶宸ヤ綔瑕佷箞澶灟鐕ャ傝繖縐嶆儏鍐典綘闇瑕佷竴涓熀浜庣粍浠剁殑framework錛屽JSF銆乀apestry/Wicket銆?br />3<strong>銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />榪欎簺鎴戝熀鏈兘璇曢獙榪囷紝浠栦滑姣忎釜閮藉伐浣滅殑寰堜笉閿欍?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />Struts Action 2鍩轟簬WebWork2錛屽緢蹇細寮濮嬨傜幇鍦ㄥ凡緇忔敮鎸丄jax浜嗭紝鎴戜滑鍦ㄥ鎵炬洿鍔犲鏄撶殑寮鍙戞柟寮忥紝JSF鏀寔錛圫truts Shale錛夛紝continuation鏀寔錛岃繕鏈夋敮鎸佹洿澶氱殑鑴氭湰璇█錛圔SF鎵╁睍鑴氭湰鎾板啓Action錛夈?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />Struts澶繃鏃朵簡錛岃屼笖涔熶笉閰鳳紝闅句簬浣跨敤銆備絾鏄綘鍙互鑷繁淇敼鎴栬呮墿灞曞畠銆傛垜璁や負鍥㈤槦瀵逛簬浣犵殑闄愬埗榪滃ぇ浜巉ramework瀵逛綘鐨勯檺鍒躲?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />涓嶉渶瑕丏&D宸ュ叿錛屾棬鍦ㄥ府鍔╁紑鍙戜漢鍛樻彁楂樺紑鍙戞晥鐜囩殑濂戒緥瀛愩傛垜浠湪Action 2涓皢瀛︿範瀹冪殑鍏堣繘鐞嗗康銆?/p> <p> <font size="6"> <strong> <font size="5">Tapestry(Howard Lewis Ship)</font> </strong> </font> <br /> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />鎴戞兂Tapestry瀵逛簬涓瓑瑙勬ā鎴栬呭ぇ瑙勬ā鐨勫簲鐢ㄤ細甯︽潵寰堝濂藉錛堢敋鑷充綘鍙互鍦ㄥ崟欏甸潰鐨勫簲鐢ㄧ▼搴忎腑鑾峰緱濂藉錛夈傝繖閲屾湁鍏佽浣犲垱寤烘柊鐨勭粍浠剁殑鑹ソ宸ュ叿銆俆apestry涓嶅叧蹇冩暟鎹粠鍝噷鏉ワ紝寰堝鈥滈」鐩被鍨嬧濋兘鍩轟簬鍒囬潰錛坅spect錛夛紙濡侰RUD vs. RSS feed vs. etc.錛夈傛垜璁や負Tapestry闈炲父瀹規槗涓嶪oC闆嗘垚錛圚iveMind鎴栦笌Spring錛夛紝鏂逛究榪涜嫻嬭瘯銆?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />鎴戝湪鍏跺畠Java framework涓病鏈夋壘鍒板埌寮轟簬Tapestry鐨勪紭鐐廣備絾鏄浜嶳oR錛屾垜鑷繁娌℃湁浣跨敤榪囦嬌鐢紝寰堥毦璇碦oR涓殑欏圭洰搴旇鏄粈涔堟牱瀛愩傛垜娌℃湁浠旂粏瀵規瘮榪嘡IFE錛屽畠鐪嬭搗鏉ュ彈浜哛oR褰卞搷錛屽挨鍏舵槸綾諱技ActiveRecord鐨勬暟鎹闂眰銆備絾鏄鏋滀綘鐨勫簲鐢ㄩ渶瑕佺壒瀹氱殑URL鏍煎紡錛岄偅涔堝湪Tapestry涓鎴樿儨綆椾笉澶с?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />鍦ㄨ繖涓ゅ勾鏉ユ垜娌℃庝箞灝濊瘯榪嘥apestry浠ュ鐨勪笢瑗褲傛垜娌℃庝箞瀛︿範RoR錛屽洜涓烘椂闂村お鏈夐檺浜嗐?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />Tapestry 4.0鏈夊緢濂界殑Ajax鏀寔錛岄氳繃Tacos搴撱傝孴apestry 4.1榪樿榪涗竴姝ュ己鍖栬繖鏂歸潰鐨勬敮鎸併?br />Tapestry 5.0鎻愪緵浜嗘槑鏄劇殑鏀硅繘錛氭病鏈塧bstract綾伙紙Tapestry鐨勬櫀:錛夈傛病鏈夊己榪殑緇ф壙鍏崇郴銆傚灞炴ц繘琛宎nnotation鑰屼笉鏄柟娉曘傛病鏈塜ML錛屽彧鏈夋ā鐗堝拰annotaions銆傚彧鑳界被瑁呰澆錛岃嚜鍔ㄥ鎵劇被鐨勫彉鍖栥傛渶灝忓寲API錛岃秴瓚奱nnotaion銆傞潰鍚戞柟闈紙Aspect-oriented錛夋ā鍧楁瀯閫狅紝浣跨敤mix-ins銆?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />Tapestry 3.0榪樹笉瀹規槗嫻嬭瘯錛?.0鏀瑰杽浜嗕竴浜涖俆apestry鍙槸涓漢縐錛涘疄闄呬笂鎴戜滑鏈夊緢澶氭椿璺冪殑璐$尞鑰呫俆apestry鐨勫涔犳洸綰塊潪鍦洪櫋宄傚畠鍙湁婕備寒鐨勬ā鐗堝疄鐜幫紱瀹為檯涓奣apestry鐨勭壒鐐瑰湪浜庣姸鎬佺鐞嗭紙鍏佽瀵硅薄瀛樺偍鐘舵侊紝鑰屼笉鏄綰跨▼鐨勫崟渚嬫潵綆$悊requests涔嬮棿鐨勬父紱誨拰鎸佷箙鐘舵侊級<br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />寰堟湁褰卞搷鍔涖備絾鏄ā鐗堢殑瀹炵幇闈炲父涓戦檵銆傛垜鍚埌浜嗗緢澶氭剰瑙侊紝鍏充簬RoR鐨勪紭緙虹偣銆傚熀浜庢垜鐨勫熀鏈悊瑙o紝榪欎簺瑙傚康瀵筎apestry 4浜х敓浜嗗獎鍝嶏紙瀹冨Tapestry 5褰卞搷鏇存繁錛夈?br />RoR鎰忓懗鐫闄愬埗浜嗕綘鐨勯夋嫨錛氬鏋滀綘閫夋嫨RoR閭d箞灝辮灝婃棳瀹冪殑瀹炶返錛圕oC..錛夛紝鐪嬭搗鏉ヤ綘鐨勯挶浼氳姳鐨勬仺鍊箋傝繖浜涚被浼糓icrosoft鐨勫摬瀛︺傝孞ava鏇村磭灝氱粰浣犳洿瀹芥澗鐨勯夋嫨錛屼笉闄愬畾浣犱嬌鐢ㄧ殑宸ュ叿錛屼絾鏄毀鏄х殑璇磋繖闇瑕佷綘瀵逛綘鐨勫伐鍏風悊瑙f洿娣便備笉浠呭Tapestry錛岃繕瀵逛簬JEE銆丼pring榪欏啓entire stack鐨勬鏋訛紝闇瑕佷粠RoR瀛︿範錛屼笉浠呮彁渚涘伐鍏鳳紝榪橀渶瑕佹彁渚涙暣濂楃殑瑙e喅鏂規銆?/p> <p> <font size="6"> <strong> <font size="5">Trails(Chris Nelson)</font> </strong> </font> <br /> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />Trails鐨勫簲鐢ㄧ▼搴忓彧闇瑕乄eb鐣岄潰鍜屾寔涔呭寲鐨刣omain model灝卞彲浠ヤ簡銆俆rails緇欎綘鐨刣omain model蹇熺殑鎻愪緵涓涓晫闈紝闄や簡POJO鑷繁涓嶉渶瑕侀檮鍔犵殑浠g爜銆俆rails鍏佽浣犱慨鏀圭晫闈㈢殑澶栬鍜岃涓猴紝鍖呮嫭楠岃瘉銆乮18n銆佸畨鍏ㄣ傝繖浜涢兘涓嶉渶瑕乯ava浠g爜鐢熸垚錛屼笉鍠滄浠g爜鐢熸垚鐨勪漢搴旇鎰熻寰堣垝閫傘?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />Trails璁茬┒澶熺敤灝卞ソ銆傚畠鍏佽浣犲揩閫熶氦浠橈紝闂棶浣犵殑瀹㈡埛錛氣滆繖鏍峰濂戒箞錛熲濄傝繖浼氭敼鍙樹綘鐨勫伐浣滄祦紼嬶紝褰撶劧榪欎笉鏄彲浠ヨ鐩栨墍鏈夐渶姹傜殑瑙e喅鏂規銆傚綋UI闇姹傚緢楂橈紝Trails娌℃湁浼樺娍銆傛垜璁や負Trails閫傚悎浜庢販鍚堢殑搴旂敤錛屽浜庣鐞嗗憳浠栦滑鍙渶瑕佸鐢ㄥ氨濂斤紝閭d箞灝卞彲浠ヤ嬌鐢═rails銆傚叾瀹冪殑閮ㄥ垎鎴戜滑鍙互璁㈠埗寮鍙戯紝鎴戜滑鍦ㄤ嬌鐢═apestry銆丠ibernate銆丼pring鏉ュ疄鐜拌繖浜涢儴鍒嗭紝Trails姝f槸鍩轟簬瀹冧滑銆傚浜庨潪浜や簰鐨勫簲鐢紝Trails涔熶笉閫傚悎錛屽鎶ヨ〃搴旂敤錛屽彲浠ヨ冭檻Eclipse BIRT銆?br />3<strong>銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />鎴戠敤Struts寰堝銆傚畠鏇劇粡鏄紵澶х殑framework銆備富瑕佺殑緙洪櫡鏄畠涓嶈兘鑷姩甯畾鏁版嵁鍒癲omain model銆傛垜涔熺爺絀惰繃JSF錛屽畠姣擲truts寮猴紝浣嗘槸鑷畾涔夌粍寤洪潪甯擱毦銆俆apestry闈炲父渚夸簬鑷畾涔夌粍寤猴紝灝ゅ叾瀵逛簬寤虹珛楂橀樁緇勪歡錛堟湁鍏跺畠緇勪歡緇勬垚鐨勶級闈炲父鏂逛究錛孴rails姝e湪浣跨敤瀹冦?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />瀵逛簬Trails鏉ヨ鎴戜滑绔欏湪宸ㄤ漢鐨勮偐鑶涓娿俆apestry鍦╝jax鍔熻兘浣滀簡寰堝鍔姏錛屾墍浠rails涔熶笉闅句笌鍏跺叡鑸炪備絾鏄垜浠渶瑕佸垱寤烘洿澶氱殑渚嬪瓙鏉ユ紨紺鴻繖浜涖傛垜浠篃鑷村姏浜庤Trails瀹規槗浠嬪叆鍒板凡緇忚繘琛岀殑欏圭洰涓備互鍚嶵rails榪樿鍔犲叆鍩轟簬瀹炰緥鐨勫畨鍏紙instance-based security錛夛紙鐩墠姝e湪浣跨敤鍩轟簬瑙掕壊鐨剅ole-based錛夛紝榪樻湁method invocation銆?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />Trails鏄RoR鐨勭Щ妞嶃俆rails鐨勫悕瀛楁潵鑷猂ails銆傚畠鏄熀浜嶳ails鐨勭悊蹇碉紝浣嗕笉鏄瀹冪殑縐繪銆?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />鎴戣涓烘垜浠湁寰堝闇瑕佷粠RoR瀛︿範鐨勫湴鏂癸紝閭e皢甯姪鎴戜滑浜彈寮鍙慦eb紼嬪簭鐨勬儸鎰忋?/p> <p> <font size="6"> <strong> <font size="5">WebWork(Patrick Lightbody)</font> </strong> </font> <br /> <strong>1銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong> <br />涓鑸潵璇達紝WebWork涓鑸傚悎灝忕殑鍥㈤槦錛屽畠浠効鎰忎繚鎸佷竴鍙岃剰鎵嬶紝瀛︿範寮鍏冨伐鍏峰浣曚嬌鐢ㄣ俉ebWork涓嶉潰鍚戔滆疆妞呯▼搴忓憳鈥濓紝閭d簺浜哄彧鍠滄鎷栨嫿寮忕殑寮鍙戙俉ebWork緇欒姳鏃墮棿瀛︿範瀹冪殑浜哄洖鎶ャ備緥濡傦紝鐩村埌杈撳叆鍜岃緭鍑虹殑浜猴紙闃呰浜嗗弬鑰冩枃妗o紝閭f牱寰堝ソ錛夎兘澶熷鏄撶殑鍒涘緩ActionMapper鍜孋onfiguration瀹炵幇鏉ユ彁渚涒滄儻渚嬧濅唬鏇塊厤緗紙CoC錛夌殑鏂逛究銆傛垜鏈榪戠殑渚嬪瓙涓紝URL鏄繖鏍封?project/123/suite/456/test/create鈥濆獎灝勫埌鈥渃om.autoriginate.actions.project.suite.test.CreateAction鈥濓紝鐒跺悗鑷姩鐨勪紶閫掑弬鏁幫細projectId=123銆乻uiteId=456銆傝孯esult鏄淸action].jsp鈥濇垨鑰呪淸action]-[result].jsp鈥濓紝涔熷彲浠ラ氳繃annotation鏉ラ厤緗?br />涔熷氨鏄錛學ebWork鏄綘鐨勫簲鐢ㄧ▼搴廸ramework涓殑鏈浣沖熀紜宸ュ叿銆傚湪榪欑鎯呭喌浠ュ涔熷緢濂斤紝浣嗘槸鐩墠涓嶇畻鏈浣崇殑鈥滅敎鐐光濄?br />闄ゅ幓榪欎簺涓鑸殑錛學ebWork瀵逛簬姝e湪鍒涘緩闇瑕佹彃浠跺拰鎵╁睍鐨勪駭鍝佺殑浜烘槸蹇呭鐨勩備緥濡侸IRA銆丆onfluence銆丣ive Forums銆傚洜涓篧ebWork鏀寔騫挎硾鐨勬ā鐗堣璦錛圴elociy鍜孎reeMarker錛夛紝瀹屾暣鐨則ag鏀寔錛屾ā鍧楀啓濂藉悗闈炲父瀹規槗鎻掑叆銆備竴涓猨ar鍖呭氨鍙互鍖呮嫭鎵鏈夌殑action鍜寁iew錛堝緱鐩婁簬ftl鐨刢lasspath鏀寔錛夈傛渶緇堢殑鏁堟灉寰堝ソ錛氬湪Confluence涓綘鍙互閫氳繃綆$悊鐣岄潰涓婁紶涓涓猨ar錛岃繖涓猵lug-in灝變細鑷姩閮ㄧ講銆傝繖鏄洜涓篈tlassian錛圕onfluence銆丣ira鐨勫皬緇勶級闈炲父浜嗚В榪欎釜framework錛屽茍涓斾綔浜嗗緢澶氱殑璐$尞銆?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵</strong><br />涓庡叾瀹僡ction framework鐩稿悓錛學ebWork鍦ㄦ帶鍒剁姸鎬佸拰wizards涓婃瘮杈冨急銆傚鏋滀綘鍐欎簡寰堝闀跨殑wizards錛孞SF鍙兘鏄瘮杈冨ソ鐨勮В鍐蟲柟妗堛傛垜榪樻兂璇達紝鏂囨。榪橀渶瑕佹敼鍠勶紙鍙傝冩枃妗h繕涓嶉敊錛屼絾鏄暀紼嬨乧ookbooks鍜孎AQ榪樻瘮杈冨樊錛夛紝濡傛灉娌℃湁涓涓猈ebWork楂樻墜浣滀負欏圭洰棰嗛槦錛屾柊鎵嬪彲鑳戒細鏁岃繙涔嬨?br />瀵逛簬闈炲父綆鍗曠殑紼嬪簭錛屾垜鎺ㄨ崘浣跨敤綆鍗曠殑JSP鎴栬匰pring MVC錛屽鏋滅敤鎴鋒帴鍙桽pring鐨勮瘽銆備絾鏄葷殑鏉ヨ錛屾垜璁や負鍦╝ction framework涓璚ebWork鏄渶濂界殑銆?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?br /></strong>鎴戣瘯楠岃繃RIFE銆丼pring MVC銆丼truts銆丼pring Web Flow錛岃繕鏈変竴鐐圭偣Tapestry銆傛垜鍙戠幇RIFE鐨勬蹇靛緢浼樼錛屼絾鏄畠鐨勫疄鐜頒笉鎬庝箞鏍楓備笉闅炬兂璞eert榪樻槸浣跨敤鈥渕_鈥濅綔涓哄瓧孌電殑鍓嶇紑銆傚畠鐪嬭搗鏉ヤ笉鍍廕ava銆傛ā鐗堥毦浣忎簡鎴戯紝鎵浠ュ氨娌℃湁緇х畫鐪嬨?br />Spring MVC榪樺彲浠ワ紝浣嗘槸瀹冩槸涓涓潪甯哥畝鍗曠殑framework瀹炵幇銆俉ebWork鐨勬暟鎹粦瀹氾紙WebWork涓栫晫涓О涓虹被鍨嬭漿鎹級瑕佸己澶氫簡錛岃屼笖鏄嚜鍔ㄧ殑錛堣孲pring闇瑕佽嚜宸卞啓property editors錛夈傚湪Spring涓殑view鏇挎崲鏀寔娉版湁闄愪簡錛岃學ebWork涓殑UI tags鍦⊿pring涓帇鏍規病鏈夋彁渚涖係pring涓綘鍙互浣跨敤JSP 2.0杞繪澗鐨勫啓鑷繁鐨則ag錛屼絾鏄笉鏀寔鍏跺畠鐨勮璦銆?br />Spring Web Flow錛歑ML璁╂垜鎶撶媯銆傚お榪囩伀浜嗭紝涓嶇Keith鐨勪富寮狅紝瀹冣滀笉鏀寔浠諱綍鐨刉eb framework鈥濄傝繖涓獁eb framwork鍥為伩鎺変簡WebWork銆丼pring MVC銆丼truts鎴栬呭叾瀹僨ramework涓殑99%銆傛垜鍊掍笉鏄榪欐槸涓潖涓繪剰錛屼絾鏄垜搴旇璇氬疄鐨勮瀹冩槸涓涓畬鏁寸殑妗嗘灦銆?br />Tapestry寰堜紭闆咃紝浣嗘槸HTML灞炴э紙jwcid錛夋児浜哄帉銆傛垜鎺ュ彈榪欑鐞嗗康錛屼笖瀹炶返涓繖浼氬甫鏉ヤ竴浜涘ソ澶勶紙Shale涔熸湁鐩鎬技鐨勫湴鏂癸級銆備絾鏄疄闄呬笂錛屾垜鍙戠幇鈥淗TML/CSS寮鍙戣呪濆拰鈥渁pp寮鍙戣呪濅竴鑸槸鍚屼竴涓漢錛孴apestry灝辨灦璁懼姝ゃ傚疄闄呬笂錛岀敱浜嶢jax鐨勬帹鍔紝鎴戞兂瓚婃潵瓚婂鐨勨滅▼搴忛昏緫鈥濅細琚祵鍏ュ埌UI錛涜繖鏍風殑璇濓紝Tapestry鐨勬ā鍨嬪氨涓嶉偅涔堥傚疁浜嗐?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />鍦⊿truts Action 2.0鎴戜滑甯屾湜錛氭洿濂界殑鏂囨。銆傛敮鎸佹爣鍑嗭紙濡傛灉鍙互錛屾垜浠笇鏈涚敤JSTL浠f浛OGNL錛屼絾鏄鍏堣淇濊瘉涓嶄細鏈夊姛鑳芥崯澶憋級銆傚寮篈JAX鏀寔錛屾彁渚涙洿澶氱殑widgets錛氬鑷姩瀹屾垚銆傝В闄ら厤緗湴鐙憋紱鎻愪緵鏇村鐨勯夋嫨錛屽鎴戜滑寮濮嬫墍璇寸殑CoC銆?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />浠栭渶瑕佸緢澶氱殑閰嶇疆錛氭垜宸茬粡婕旂ず榪囷紝閫氳繃CoC椋庢牸錛屽畠鍙互鍋氱殑姣擱ails鏇村ソ錛圧ails鐨勭鐞嗛儴鍏佽鍐呭祵controllers錛夈?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />闈炲父閲嶈鐨勪竴鐐規槸錛屾垜瑕佽RoR涓嶈兘涓庡ぇ澶氭暟鐨刦ramework瀵規瘮錛岄櫎浜哛IFE鍜孲eam銆傚姣擱oR鍜學ebWork灝辯浉褰撲簬瀵規瘮Hibernate鍜孞DBC銆備竴涓槸full stack錛屽彟涓涓彧鏄痵tack涓殑涓閮ㄥ垎銆?br />鍙︿竴涓噸瑕佺殑闂錛欴HH鏄釜鎬儙錛屼絾鏄仾鏄庣殑鎬儙銆傚畠鐨勯珮鏁堢巼鏃犲彲浜夎京錛屽畠琚О涓篟ails銆?br />濂界殑錛屾垜浠笉璇磋繖涓紝闅忎究璇磋鍒殑錛?br />鎴戜嬌鐢≧ails鍒涘緩浜嗕竴涓皬鐨刟pp銆傛垜鎶婂畠鎵旀帀騫跺緢蹇敤Java閲嶅啓浜嗐傛垜璁や負Rails鍙互璁╀綘鐨刟pp涓殑80%蹇熷畬鎴愶紱鑰屽墿涓嬬殑20%姣斿墠闈?0%闇瑕佽姳鐨勬椂闂磋繕澶氥傚綋鐒剁▼搴忓紑鍙戝氨鏄繖鏍楓傝剼鎵嬫灦闈炲父閰鳳紝灝ゅ叾鏄疉ctiveRecord鍦ㄨ繍琛屾椂鏀瑰彉綾匯備絾鏄悗鏉ヤ綘闇瑕佸啓UI銆佽嚜瀹氫箟鐨勯獙璇佽鍒欙紝鑷畾涔夊畨鍏ㄥ獎灝勭瓑絳夈備竴涓熀浜嶤RUD鐨刟pp鑳藉鍦?0鍒嗛挓鍐呰繍琛屽茍涓嶆剰鍛崇潃浣犺兘浠ヨ繖涓熷害瀹屾垚瀹冦?br />Rails鐨剋eb framework閮ㄥ垎鐩告瘮浜嶹ebWork寰堝彲鎬曘傚疄闄呬笂鏍規湰鏃犳硶姣旇緝銆傚畠鐨勫疄鐜版洿鎺ヨ繎浜嶴pring MVC鐨勭畝鍗曞姛鑳姐?br />瀹屾暣鐨剆tack闈炲父媯掋備粬浠湪榪欐柟闈㈠仛寰楀緢濂斤紝榪欓噷Java榪樻湁宸窛闇瑕佽拷璧躲俉ebWork鏄痺eb stack錛屼絾鏄寔涔呭寲瑙e喅鏂規騫朵笉紜畾銆傛墍浠ユ渶澶х殑闂鍦ㄤ簬鍗充嬌WebWork鍜孲iteMesh鎻愪緵浜嗗閰嶇疆鍔ㄦ佽鍙栧拰鍔ㄦ佺被reloading錛孲pring銆乮Batis鍜孒ibernate騫朵笉鎻愪緵銆傚畠浠嚦灝戦渶瑕佹彁渚涢厤緗噸璇誨彇鍚庢墠鍙互鍙戝睍鍑虹被浼糝ails閭f牱鐨勫姛鑳姐傜被浼肩殑錛孒ibernate鍜宨Batis瀵筗ebWork絳夌殑璇鋒眰鎻愪緵鐨勬敮鎸佷笉澶熴傚浜庝竴涓被錛屾垜鍙互涓嶉渶瑕佸啀xwork.xml涓繘琛岄厤緗紝浣嗘槸鎸佷箙鍖栧紩鎿庡茍涓嶅厑璁告垜浠繖鏍峰仛銆傚綋榪欎簺鍔熻兘鑳藉鍚屾椂鍏峰錛屾病鍑嗕竴涓猚omplete stack鐨勬鏋跺氨浼氭帹鍑恒?br />瑕佹眰蹇?鍊?0鍊嶆槸鎰氳牏鐨勩傚彲闈犵殑宸ョ▼甯堥兘鐭ラ亾寮鍙戜駭鍝佺殑鏃跺欐渶澶х殑璀﹀姏閮借姳璐瑰湪鏋勬濅唬鐮佷笂錛岃屼笉鏄功鍐欎唬鐮併傚畾涔夐渶姹傦紝鑾峰彇鍙嶉錛屽競鍦哄畾浣嶏紝瀹氫箟鏁版嵁搴撶粨鏋勶紝鏄犲皠鐢ㄦ埛鎺ュ彛銆備笉綆′嬌鐢ㄤ粈涔堣璦錛屼綘闇瑕佹濊冨緢闀挎椂闂淬傛病鏈夎璦鎴栬呮鏋惰兘澶熸彁鍗囨濊冪殑閫熷害銆?br />鏈鍚庯紝Rails鎻愪緵浜嗭細鐢ㄨ剼鏈璦鑹ソ瀹炵幇鐨剆tack銆侾ython銆丳erl灝ゅ叾鏄疨HP涓殑鍏跺畠妗嗘灦榪樻病鏈夋垚鐔熴傛垜璁や負鈥淧HP鐚村瓙鈥濅滑榪樻湁寰堝浜嬫儏瑕佸仛錛屼粬浠氬父涓嶆槸寰堟湁鎵嶅共鐨勫伐紼嬪笀銆傦紙鍙兘鎴戠炕璇戦敊璇簡錛屽笇鏈涚籂姝o級銆傚湪鑴氭湰璇█涓彁渚涜壇濂界殑妗嗘灦錛屼漢浠兘澶熷疄鐜拌璁$簿鑹殑app騫剁殑鍒板洖鎶ワ紙鍥犱負鑴氭湰璇█鐨勭壒鐐癸級銆備笉鍙槸鈥滅鐞嗕唬鏇塊厤緗瓹oC鈥濈敋鑷蟲槸闆嗘垚stack錛孞ava闇瑕佺殑鏄珛鍒誨弽灝勫嚭鍙樺寲鐨勮兘鍔涖傚緢澶欽ava寮婧愰琚栬涓衡滀慨鏀箇eb.xml鈥濈殑閲嶆柊杞藉叆鏄竴縐嶆柟娉曘傝繖縐嶆櫤鍔涙父鎴忓簲璇ョ粨鏉熶簡銆傛垜浠笉浠呬粎闇瑕侀厤緗枃浠跺拰綾葷殑閲嶆柊杞藉叆錛屾垜浠渶瑕佺ぞ鍖虹粰Sun瓚沖鐨勫帇鍔涳紝浣垮叾鑳藉鍦ㄤ笅涓浠g殑JVM涓彁渚涚儹鎻掓嫈錛圚otSwap錛夌殑鑳藉姏銆傛垨鑰咃紝鏇村姞澶嶆潅鐨勭▼搴忔ā鍨嬶紝濡侽SGi錛岄渶瑕佽繘涓甯冭紺懼尯鎵鎺ュ彈銆傚綋鐒舵垜騫朵笉甯屾湜璧伴偅鏉¤礬綰褲?/p> <p> <font size="5"> <strong>Wicket(Eelco Hillenius)</strong> <br /> </font>1<strong>銆佷綘璁や負浣犵殑framework鐨勨滅敎鐐光濆湪鍝噷錛熶粬鏈閫傚悎鍝綾誨瀷鐨勯」鐩紵</strong><br />鎴戣涓烘湁5鐐癸細Wicket鏄互浠g爜涓轟腑蹇冪殑錛氬彲浠ュ湪view灞傝繘琛孫O緙栫▼銆傜粍浠舵槸瀹屽叏鑷鐞嗙殑錛氬鏄撳垱寤哄拰閲嶇敤銆傛蹇電殑鍒嗙鏄竻鏅扮殑涔熸槸寮鴻揩鐨勩傚共鍑鐨勬ā鐗堛傚紑鍙戜幾緙╂уぇ-灝卞儚OO涓鏍楓?br /><strong>2銆佸畠涓嶉傚悎浜庝粈涔堟牱鐨勫満鏅紵鍦ㄨ繖浜涘満鏅綘鎺ㄨ崘浠涔坒remework錛熷畠鏄摢涓紵<br /></strong>Wicket涓嶉傚悎UI寰堢畝鍗曚笖鍙鐨勫満鍚堛傝繖鏃墮〉闈㈣剼鏈洿鍔犻傚悎錛屾瘮濡侸SP錛屾垨鑰匤SF銆傚鏋滀綘闇瑕佹棤闄愮殑鍙幾緙╂э紝浣犲彲鑳介渶瑕佺姸鎬佹棤鍏崇殑瀹炵幇銆備粠1.2鐗堝紑濮嬶紝Wicket涔熸湁鏃犵姸鎬侀〉闈㈢殑姒傚康錛岃繖鏍峰彲浼哥緝鎬т笌鍏跺畠framework宸笉澶氫簡銆?br /><strong>3銆佸湪涓嬮潰鎻愬埌鐨刦ramework涓紝浣犺瘯楠岃繃浠栦滑涔堬紵濡傛灉璇曢獙榪囷紝浣犳瘮杈冨枩嬈㈠摢涓紵浣犱笉鍠滄鍝釜錛?/strong><br />JSF錛?br />浼樼偣錛氬熀浜庣粍浠躲傚伐涓氳儗鏅傚伐鍏鋒敮鎸併備竴浜涙墿灞曡浠栨洿瀹規槗浣跨敤銆傚畠鍏佽浣犱粠浼犵粺JSP鍗囩駭鍒癑SF銆?br />緙虹偣錛氬畠緙哄皯鍏跺畠API鐨勪紭闆呫備互JSP涓轟腑蹇冦傞厤緗緢澶氳屼笖浠g爜寰堥毦鐪嬨傛湁寰堝縐嶅疄鐜般傚畠璁╂垜鍥炲繂璧稥JB1/2錛屼互鍘傚晢涓轟腑蹇冪瓑絳夈?br />RIFE錛氭病鐢ㄨ繃錛岃浜嗕竴澶у爢銆?br />Seam錛氫笉鏄竴涓湡姝g殑Web framework銆傜被浼糐SF鎵╁睍銆傚鏋滀嬌鐢‥JB/JSF/JBoss緇勫悎錛岃繖涓夋嫨寰堝ソ銆備絾鏄笉閬靛驚JSR 227/235銆?br />Tapestry錛氬緢濂斤紝4.0鐗堟湰濂戒簡寰堝銆傛垜鎶婂畠鎺ㄨ崘緇欐垜鎵宸ヤ綔鐨勫叕鍙搞俉icket鏇村姞浠ョ紪紼嬩負涓績銆傝孴apestry鏇村姞pragmatic銆?br />Trails錛氫粠鏉ユ病鐢ㄨ繃銆?br />Spring Web Flow錛歠ramework鏈韓寰堝ソ錛屼絾鏄垜涓嶅枩嬈㈠畠鐨剆tacking銆傚鏋滅敤宸ヤ綔嫻侊紝鎴戝笇鏈涢夋嫨涓涓jBMP鐨勬柟妗堛傛垜涔熶笉鍠滄浠ユ祦涓轟腑蹇冪殑瑙e喅鏂規錛岃涓鴻繖鏍峰緢榪囩▼鍖栥?br />WebWork銆丼pring MVC銆丼truts錛歁odel 2鐨刦ramework緋熼忎簡銆傛垜鐢ㄨ繃鍑犲勾錛屼篃瀵筂averick璐$尞榪囦唬鐮侊紝浣嗘槸鎴戝交搴曞け鍘誨叴瓚d簡銆侻odel 2 framework澶繃紼嬪寲浜嗭紝榪欎簺紼嬪簭鍛樹笉鐭ラ亾鎬庝箞鐢∣O緙栫▼銆傛垜瀹佸彲闆囦劍涓涓猄wing緙栫▼鐨勪漢涔熶笉浼氬幓閫夋嫨涓涓嬌鐢∕odel 2 framework緙栫▼鐨勪漢錛屽洜涓篠wing緙栫▼鐨勪漢鍐欑殑紼嬪簭涓鑸洿婕備寒銆傗︹﹀鏋滆鎴戜粠榪欎簺Model 2 framework涓寫涓涓嚭鏉ワ紝鎴戦夋嫨Stripes錛屽畠鎶涘純浜唌odel 2涓殑涓浜涗笉濂界殑鏂歸潰銆?br /><strong>4銆佷綘鐨刦ramework鐨勬湭鏉ヤ細鎬庢牱錛熷浜庣敤鎴峰紑鍙戜細鏈変粈涔堟柟渚夸嬌鐢ㄧ殑鍙樺寲錛熶綘浼氬師鐢熸敮鎸丄jax涔堬紵浣犱滑璁″垝鏀寔瀹冧簡涔堬紵</strong><br />鎴戜滑灝嗕細鏀寔Java5銆傛垜浠細澧炲己Spring鏀寔錛屽鏉傜殑鏉冮檺璁よ瘉鏀寔錛屽拰鍩轟簬瑙掕壊鐨勫弬鑰冨疄鐜幫紝榪樹細鎻愪緵鍘熺敓AJAX鏀寔錛孶RL鍔犺澆錛坣ice URLs錛夛紝鏃犵姸鎬侀〉絳夈?br />鎴戜滑鐨勫競鍦哄崰鏈夌巼涓嶉珮錛屼絾鏄敤鎴風兢鍦ㄦ彁楂樸傛垜姝e湪鍐欌淲icket In Action鈥濓紙Manning鍑虹増錛夋鍦ㄧ鍒掍腑錛屼粖騫村澶╀細鍑虹増銆?br /><strong>5銆佹湁瀵逛綘浠殑framework鐨勪紶璦闇瑕佹緞娓呬箞錛熷鏋滄湁錛屾槸鍝釜錛?/strong><br />鍏充簬浼哥緝鎬х殑闂鏄涓浣嶇殑銆傜▼搴忕殑鍙幾緙╁瀷涓鑸槸鐢辨暟鎹簱鎬ц兘宸垨鑰呯紦瀛樼瓥鐣ユ煡璇紭鍖栧茍鍙戠瓑闂銆傛湇鍔″櫒绔彲浼哥緝鎬у茍涓嶄竴瀹氫笉鍙墿灞曪紝鍙互閫氳繃闆嗙兢鏉ョ戶緇濄傗︹?br /><strong>6銆佷綘瀵筊uby on Rails鐨勭湅娉曞浣曪紵</strong><br />鎴戝枩嬈㈡垜鐪嬪埌鐨凴uby錛屽鏋滄垜鏈夋椂闂存垜榪樹細浠旂粏鎶婄帺瀹冦傚鏋滀笉鏄疻icket鐨勯棶棰橈紝鎴戝笇鏈涙洿澶氱殑瀹炶返RoR銆傗︹?/p> <img src ="http://m.tkk7.com/iamtin/aggbug/38276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/iamtin/" target="_blank">Tin</a> 2006-03-30 16:28 <a href="http://m.tkk7.com/iamtin/archive/2006/03/30/WebFrameworkSweetSpots.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Webwork 2.2.2鏂板鐨剋w:date鐨勭敤娉?/title><link>http://m.tkk7.com/iamtin/archive/2006/03/28/37865.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Tue, 28 Mar 2006 12:00:00 GMT</pubDate><guid>http://m.tkk7.com/iamtin/archive/2006/03/28/37865.html</guid><wfw:comment>http://m.tkk7.com/iamtin/comments/37865.html</wfw:comment><comments>http://m.tkk7.com/iamtin/archive/2006/03/28/37865.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/iamtin/comments/commentRss/37865.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/iamtin/services/trackbacks/37865.html</trackback:ping><description><![CDATA[ <p>浠婂ぉ嫻忚WW鐨刉iki錛岀粨鏋滄棤鎰忓彂鐜皐w:date鏍囩鐨勭敤娉曪紝鎸犲ご涓鎯充互鍓嶆病鏈夎榪囧憖錛屼粩緇嗕竴鐪嬪師鏉ユ槸2006/3/21鎵嶅姞涓婄殑銆?br />浼氬ご鐪嬬湅欏圭洰鍙戠幇鐢ㄧ殑ww 2.2.1涓病鏈夎繖涓爣絳撅紝蹇冩兂鏄笉鏄彂甯冩柊鐗堟湰浜嗭紵<br />鏋滀笉鍑烘墍鏂欙紒鍙戠幇OPENSYMPHONY宸茬粡鍙戝竷2.2.2浜嗐?br />涓嶈繃2.2.2鏄湪Opensymphony涓嬬殑鏈鍚庝竴涓増鏈簡錛屼互鍚庣殑鐗堟湰灝變細浠truts Action 2.0鐨勫艦寮忓彂甯冧簡錛岃屽悗鑰呬粖騫?鏈堟墠鍙戝竷錛屼腑闂寸殑鏃ュ瓙浼拌鍙兘闈爊ightly build浜嗐?br />璇磋鍙樺寲錛屽彂鐜板鍔犱簡RichTextEditor錛岀粡鑰冨療灝辨槸鎴戜滑鐔熸倝鐨凢CK Editor銆傚彂鐜拌繕澧炲姞浜唍ifty corners錛岃繖鏄竴涓笉鐢╥mages鐨勫渾瑙掑鍣紙css+js錛夛紝浼拌鐢ㄥ湪浜嗘煇涓猼heme閲岄潰銆傝繕鏈塉2SE5鐨勬敮鎸佷篃鏇村姞瀹屽杽錛岀幇鍦ㄥ凡緇忓彲浠ユ敮鎸佹硾鍨婥ollection鐨勫弽灝勶紙鏃犻渶-conversion鏂囦歡浜嗭級錛岃繕鏀寔annotation椋庢牸鐨剉alidation澹板悕錛堝姝ゅ儚Stripes閭f牱鐨刉eb妗嗘灦灝辨病浠涔堝彲鍚瑰槝鐨勪簡錛夈傚叾瀹冪殑鍙樺寲璇峰弬鑰冧粬浠殑ReleaseNotes銆?br /><a >http://www.opensymphony.com/webwork/wikidocs/Release%20Notes.html</a></p> <p>璇磋鏂版坊鍔犵殑ww:date鏍囩銆傚緢澶氭湅鍙嬪彲鑳介兘璁や負ww:property杈撳嚭date姣旇緝涓嶅鎰忥紝浠ュ墠寰堝瑙e喅鏂規鎰熻閮戒笉澶熺伒媧匯俉W鑲畾瀵熻浜嗭紝鏂板鍔犵殑ww:date鎶婄帺浜嗕竴涓嬪彂鐜伴潪甯稿ソ鐢紝鎵浠ユ帹鑽愮粰澶у銆?br />璇硶闈炲父綆鍗曪細<br />name錛氫綘鍙栧肩殑ognl琛ㄨ揪寮?br />nice錛氭槸鍚︿嬌鐢ㄦ槗璇伙紙readable notations錛夌殑妯″紡錛屽叾瀹炲氨鏄被浼糲onflunce閲岄潰鏄劇ず鏃墮棿鐨勬柟寮忥紝綾諱技鈥渋n 2 hours, 14 minutes鈥?br />format錛氬氨鏄垜浠父鐢ㄧ殑鏃墮棿format錛屼緥濡傗測yyy-MM-dd hh:mm鈥?br />id錛氬氨鏄疕TML涓殑鍏冪礌id</p> <p>浣跨敤璧鋒潵濡備笅錛屽畼鏂圭殑渚嬪瓙錛?br /><ww:date name="person.birthday" format="dd/MM/yyyy" /><br />鎸夌収鈥渄d/MM/yyyy鈥濇牸寮忔樉紺?br /><ww:date name="person.birthday" format="%{getText('some.i18n.key')}" /><br />灝唂ormat瀹氫箟鍒癷18n鏂囦歡涓殑鏂瑰紡錛岃繖涓緢甯哥敤:D<br /><ww:date name="person.birthday" nice="true" /><br />浣跨敤鏄撹錛坮eadable notations錛夌殑妯″紡<br /><ww:date name="person.birthday" /><br />浣跨敤榛樿鐨勬牸寮忚緭鍑?/p> <p>鍏朵腑鏄劇ず鐨勮鍒欏涓嬶細<br />1銆佸鏋滃埗瀹氫簡nice="true"鍒欎紭鍏堜互鏄撹錛坮eadable notations錛夌殑妯″紡鏄劇ず<br />2銆佸鏋渘ice="false"鍒欐寜鐓ф寚瀹氱殑format鏄劇ず<br />3銆佸鏋滀笂闈袱涓睘鎬ч兘娌℃湁鎸囧畾錛屽垯浠庨粯璁ょ殑璧勬簮鏂囦歡涓鎵緒ebwork.date.format榪欎釜i18n鐨刱ey錛屾寜鐓у畠鏄劇ず<br />4銆佸鏋滆繕娌℃湁鎵懼埌鍒欐寜鐓ateFormat.MEDIUM鏍煎紡鏄劇ず<br />5銆佺壒鍒箣澶勶細濡傛灉浠嶸alueStack娌℃湁鎵懼埌鍊鹼紝鍒欓粯璁ゆ樉紺虹┖鐧斤紙鑰屼笉鏄痭ull錛?/p> <p>灝辮繖涔堢畝鍗曪紝鎰熻璇伙紙readable notations錛夋ā寮忓挨鍏舵湁瓚o紝闈炲父濂界敤錛屼綘榪樺彲浠ョ粰瀹冩寚瀹歩18n鐨勬樉紺烘柟寮忋?br />涓嬮潰鍏變韓涓涓嬫垜鍐欑殑zh_cn鐗堟湰錛屼綘鍙渶瑕佸皢涓涓嬪唴瀹規嫹璐濆埌classpath涓嬮潰鐨刣efault.properties鏂囦歡涓氨鍙互浜嗭紙涔熷彲浠ユ寜鐓18鐨勮祫婧愭枃浠跺懡鍚嶈鍒欙級錛?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">webwork.date.format.past</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽浠ュ墠<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.future</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">鍦爗</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.seconds</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">鍑犵閽熷墠聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.minutes</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#涓鍒嗛挓|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽鍒嗛挓}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.hours</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#涓灝忔椂|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽灝忔椂}{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">#|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#闆朵竴鍒嗛挓|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><闆堵爗</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">}聽鍒嗛挓}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.days</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#涓澶﹟</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽澶﹠{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">#|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#闆朵竴灝忔椂|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><闆堵爗</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">}聽灝忔椂}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.years</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#涓騫磡</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽騫磢{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">#|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#闆朵竴澶﹟</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><闆堵爗</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">}聽澶﹠聽</span> </div> <p>杈撳嚭鐨勬牱瀛愬錛氣滀竴澶╅浂 8 灝忔椂 浠ュ墠鈥濓紝鈥? 澶╅浂 23 灝忔椂 浠ュ墠鈥濃︹?/p> <p>浣犱篃鍙互鑷繁緲昏瘧錛岄粯璁ょ殑key濡備笅錛?br />i18n鏂囦歡榛樿涓篸efault.properties</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">webwork.date.format.past</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽ago聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.future</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">in聽{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.seconds</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">an聽instant聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.minutes</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#one聽minute|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽minutes}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.hours</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#one聽hour|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽hours}{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">#|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽one聽minute|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">}聽minutes}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.days</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#one聽day|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽days}{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">#|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽one聽hour|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">}聽hours}聽<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />webwork.date.format.years</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#one聽year|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><{</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">}聽years}{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">choice</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">#|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">#</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽one聽day|</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽{</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">}聽days}聽</span> </div> <p>涓?.2.2鐨刉ebwork鍙戝竷鍏村涔嬩綑涔熶負瀹冪殑鏈潵鏈変簺鎷呭績錛屽埌Struts Action Framework鍙戝竷榪樻湁鎸轟箙錛屽叾涓殑鐪熺┖鏈熷緢闅劇瓑寰呭憖錛學W涓鍚戞湁浜涘皬姣涚梾錛岄潬nightly build鏀瑰杽榪樻槸寰堥夯鐑︾殑銆?br />2.2.2鐨勬洿澶氬姛鑳界殑鎺㈢儲甯屾湜澶у鑳藉浜掔浉浜ゆ祦銆?/p> <p>榪樻湁鐐硅ˉ鍏咃細鐜板湪鐢╳w:property杈撳嚭Date綾誨瀷鐨勬暟鎹粯璁や細鏄劇ず鍒版縐掆︹﹁娉ㄦ剰銆?/p> <img src ="http://m.tkk7.com/iamtin/aggbug/37865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/iamtin/" target="_blank">Tin</a> 2006-03-28 20:00 <a href="http://m.tkk7.com/iamtin/archive/2006/03/28/37865.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[鐘急]鍋墮亣濂囨殑鈥滄祻瑙堝櫒鍏煎闂鈥?/title><link>http://m.tkk7.com/iamtin/archive/2006/03/14/35301.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Tue, 14 Mar 2006 13:12:00 GMT</pubDate><guid>http://m.tkk7.com/iamtin/archive/2006/03/14/35301.html</guid><wfw:comment>http://m.tkk7.com/iamtin/comments/35301.html</wfw:comment><comments>http://m.tkk7.com/iamtin/archive/2006/03/14/35301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/iamtin/comments/commentRss/35301.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/iamtin/services/trackbacks/35301.html</trackback:ping><description><![CDATA[閬囧埌浜嗕竴涓鎬殑鈥滄祻瑙堝櫒鍏煎闂鈥濃︹?BR>鏄繖鏍風殑錛岀櫥闄嗛〉闈㈠伐浣滀笉姝e父錛屽湪firefox涓嬫繪槸娌℃湁鐧婚檰錛屾牴鏈氨娌℃湁瑙﹀彂webwork鐨刦ilter dispatcher銆?BR>鎵撳紑鎴戠殑涓夊墤瀹細IE銆丗irefox銆丱pera嫻嬭瘯錛屽彂鐜板彧鏈塅irefox涓嶈錛圡ozzila鍐呮牳鐨勯兘涓嶈錛夈?BR>鐒跺悗鑺變簡3涓灝忔椂鎵懼師鍥狅紝緲婚亶緗戠粶錛歸eblogic銆亀ebwork銆乫ireforx鎵鏈夊叧閿瘝閮芥悳绱簡錛屾病鏈夋敹鑾楓?BR>鐒跺悗寮濮媠niffer錛岀湅鎶ユ枃銆?BR>緇忚繃澶氭鍒嗘瀽錛屽彂鐜癴irefox鏍規湰灝辨病鏈塸ost閭d釜form錛?BR>鐒跺悗鍙堟槸緇х畫鐨勫垎鏋愯繕鏄棤鏋滐紝涓絳硅帿灞曗︹?BR>鐒跺悗鏃佽竟鍚屼簨澶у枈錛屼綘榪?lt;input type="submit".../>澶栭潰鎬庝箞宓屽浜嗕竴涓?lt;a>鍛錛?BR>鎴戝綋鍦烘檿鑿滐紝鍘熸潵浠ュ墠闈欐佹紨紺鴻繖閲屾斁浜嗕釜<a>鈥︹︾粨鏋滃悗鏉ョ姱鍌繪妸<input>鍐欏湪浜嗛噷闈紝鑰宖irefox瀵筧鐨勮В閲婂拰IE涓嶅悓錛岀粨鏋渁鐨勫唴瀹逛紭鍏堜簬input錛岀粨鏋滄病鏈塸ost鑰屽彧鏄Е鍙戜簡a鐨刦ref  鎴?$#&U$#*&$鈥︹?BR>娌¤瘽璇翠簡錛岀粷瀵圭殑寮辨櫤琛屼負銆傜粨緇寵浜嬶紝浠ョ粷鍚庢偅銆?BR>娉ㄦ剰<a>鍜屽叾瀹冨厓绱犲祵濂楁椂嫻忚鍣ㄧ殑瑙i噴宸紓錛岃繖鏄釜灝忛敊錛岃皝鐭ヨ繕浼氭湁浠涔堝ぇ閿欙紵<IMG height=19 src="http://m.tkk7.com/Emoticons/74_74.gif" width=19 border=0><img src ="http://m.tkk7.com/iamtin/aggbug/35301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/iamtin/" target="_blank">Tin</a> 2006-03-14 21:12 <a href="http://m.tkk7.com/iamtin/archive/2006/03/14/35301.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍦╓ebwork涓嬌鐢╳w:action瀹炵幇欏甸潰鎺у埗鍣ㄩ鏍糀ction澶嶇敤http://m.tkk7.com/iamtin/archive/2006/03/10/34666.htmlTinTinFri, 10 Mar 2006 06:45:00 GMThttp://m.tkk7.com/iamtin/archive/2006/03/10/34666.htmlhttp://m.tkk7.com/iamtin/comments/34666.htmlhttp://m.tkk7.com/iamtin/archive/2006/03/10/34666.html#Feedback4http://m.tkk7.com/iamtin/comments/commentRss/34666.htmlhttp://m.tkk7.com/iamtin/services/trackbacks/34666.htmlWebwork鏄爣鍑嗙殑璇鋒眰椋庢牸Web MVC錛岀被浼肩殑鏈塖truts銆丼pring MVC銆傝繖榪欑椋庢牸鐨凪VC涓兘浣跨敤浜嗗墠绔帶鍒跺櫒妯″紡錛堜紒涓氭灦鏋勬ā寮忥級錛屼篃灝辨槸璇翠竴涓猆RL浼氳瑙f瀽鐒跺悗媧懼彂鍒板搴旂殑Action瑙f瀽錛岃孷iew璋冪敤鐨勬槸Action澶勭悊鍚庣殑Form瀵硅薄鎴栬匔ommand瀵硅薄錛圧od鐨刉ithout EJB錛夈?BR>涓婇潰寮曠敤浜嗕竴浜涚粡鍏哥殑璦璁猴紝鑰屽畠浠拰鈥滈〉闈㈡帶鍒跺櫒椋庢牸Action澶嶇敤鈥濇湁浠涔堝叧緋誨憿錛?BR>鍢垮樋錛岄〉闈㈡帶鍒跺櫒鍦ㄨ繖閲屾寚鍒頒簡View鐨凱age閲岄潰渚濈劧鍙互璋冪敤鎺у埗鍣紙鍦╓ebwork涓氨鏄疉ction錛夈傚鏋滄槸浠ュ墠鑲畾鏈変漢浼氳錛屽鏋滅敤JSP鎴戦殢鏃跺彲浠ュ湪Page閲岄潰鍐檚criptlet錛屼粈涔堜笢瑗塊兘鑳借皟鐢ㄢ︹?BR>鍙槸錛岀幇鍦ㄤ笉涓鏍蜂簡銆傛垜浠笇鏈涜View鍗曠函涓鐐癸紝涓嶈鏈夋潅涔辨棤绔犵殑閫昏緫鍙備笌鍏朵腑銆?BR>鍙槸錛屽鏋滆鏄涓婇潰鎵璇撮偅涔圓ction鍦ㄥ畠鐨勪竴涓姹傜敓鍛藉懆鏈熷氨瑕佸仛鎵鏈夌殑浜嬧︹﹁繖鏍蜂竴鏄嬌Action閫昏緫鍙樺緱澶嶆潅錛屼簩鏄細鍙樺緱闅句互澶嶇敤銆?BR>鎵浠ワ紝璇村埌榪欓噷灝卞紩鍑轟簡榪欎釜涓婚錛?BR>1銆佸湪欏甸潰璋冪敤鎺у埗鍣?BR>2銆佸鐢ㄦ帶鍒跺櫒閫昏緫
鍦╓ebwork涓垜浠彲浠ヤ嬌鐢?lt;ww:action/>鏍囩瀹炵幇榪欎釜鐩殑銆?BR>鈥斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺?BR>涓嶈鐫鎬ワ紝鎴戜滑鍏堜粙緇嶄竴涓媤w:action鐨勪袱縐嶄富瑕佺敤娉曪紝鑰岃鐢ㄦ硶涔嬪墠鍏堣璇硶錛?BR>璇硶錛?BR><ww:action/>鏈?涓睘鎬э細
1銆乮d錛氱粰Action榪斿洖鐨刅alueStack鍛藉悕錛屽鏋滀笉鍐欏垯榛樿涓鴻皟鐢ㄧ殑Action鐨勫悕瀛椼傦紙璇︾粏浣跨敤鍙傜収鍚庨潰錛?BR>2銆乶ame錛氳皟鐢ㄧ殑Action鐨刵ame銆?BR>3銆乶amespace錛氳皟鐢ㄧ殑Action鐨刵amespace銆?BR>4銆乪xecuteResult錛歵rue鎴杅alse錛屾槸鍚︽覆鏌揂ction鐨刅iew銆傝繖涓喅瀹氫簡ww:action鐨勭敤娉曘傦紙鍚庨潰浼氬仛璇存槑錛?BR>5銆乮gnoreContextParams錛欱oolean鍊鹼紝request鍙傛暟鏄惁鍦ˋction琚皟鐢ㄦ椂鎵鍖呮嫭銆?/P>

濂戒簡錛岃娉曞緢綆鍗曪紝鎴戜滑璇磜w:action鐨勪袱縐嶄富瑕佺敤娉曘?BR>1銆佷唬鏇?lt;jsp:include>錛?BR>include鏈変袱縐嶆柟寮廆 include鍜宩sp:include錛屽畠浠竴涓槸緙栬瘧鍓嶄竴涓槸榪愯鏃秈nclude銆倃ebwork鏄笉鑳戒嬌鐢?lt;jsp:include>鐨勩?BR>浣嗗叾瀹瀢w鏈墂w:include鏍囩錛屼絾鏄牴鎹甒ebwork in Action涓殑鎺ㄨ崘錛寃w:include鏍囩閫傚悎璋冪敤涓鑸瑂ervlet錛岃屽浜巃ction鍒欐帹鑽愪嬌鐢ㄥ己澶х殑ww:action銆傛墍浠ユ垜浠繖閲屽氨鐣ヨ繃ww:include銆?BR>璇村己澶ф槸浠涔堟剰鎬濆憿錛焪w:action鍏呭綋榪欎釜瑙掕壊鏃訛紝鍙互閫夋嫨鏄惁灝唙alueStack鐨勪笢瑗垮鍒惰繃鏉ャ?BR>褰搘w:action浠f浛jsp:include鐨勬椂鍊欐垜浠渶瑕乪xecuteResult="true"錛岃繖涓椂鍊欒皟鐢ㄧ殑action榪斿洖鐨剉iew浼氳include鍒拌皟鐢ㄧ殑浣嶇疆銆?lt;ww:action><param name="xxx" value="yyy"/></ww:action>鍒欏彲浠ョ粰action浼犻掑弬鏁般傚叾瀹冪殑鐢ㄦ硶灝變笌jsp:include鎴栬厀w:include鐢ㄦ硶宸埆涓嶅ぇ浜嗐?/P>

2銆侀〉闈㈡帶鍒跺櫒椋庢牸Action澶嶇敤錛?BR>鎴戜滑緇忓父閬囧埌榪欐牱鐨勫満鏅紝姣斿鐢ㄦ埛娉ㄥ唽鐨勬椂鍊欓渶瑕侀夋嫨鍗曚綅鍒楄〃銆傞偅涔堟垜浠瑀eg.action榪愯涔嬪墠灝遍渶瑕佸厛鎶婂崟浣嶅垪琛╱nitsList鍙栧嚭鏉ャ傝屽畠浠湰韜笌User娉ㄥ唽閫昏緫涓婃病浠涔堝叧緋匯?BR>鎵浠ユ湁鐨勪漢鎶婅繖涓彇鍑簎nitsList鍗曠嫭鍐欏湪prepare()鏂規硶閲岄潰錛岀劧鍚庣敤prepare Inteceptor鈥︹︽垨鑰呮妸璇誨彇unitsList鐨勯昏緫鍐欏湪execute鏂規硶閲岄潰銆?BR>浣嗘槸榪欐樉鐒墮毦浠ュ鐢紒
鍏跺疄濡傛灉鏈夊崟浣島nit榪欐牱鐨刣omain錛屾垜浠彲鑳藉氨鏈夊搴旂殑CRUD鐨凙ction銆傚叾涓彲鑳藉氨鏈塙nitsListAction榪欐牱鐨凙ction銆?BR>鎴戜滑瀹屽叏鍙互鍦ㄧ敤鎴鋒敞鍐岀殑鏃跺欏氨澶嶇敤榪欎釜Action錛岃屼笉鏄妸鍚屾牱鐨勯昏緫鍐欏埌鐢ㄦ埛娉ㄥ唽鐨凙ction閲岄潰銆傝繖灝辨槸欏甸潰鎺у埗鍣ㄩ鏍艱瑙e喅鐨勯棶棰樸?BR>璇撮偅涔堝澶у附瀛愬叾瀹炴病鏈夋剰涔夛紝鎴戜滑鐪嬬湅鎬庝箞瀹炵幇錛?BR>UnitsListAction鐗囨柇錛堟垜浠澶嶇敤瀹冿級錛?/P>

UnitService unitService = null;//娉ㄥ叆錛屽晢涓氶昏緫
List<Unit> unitsList = null;//璁劇疆瀵瑰簲getter銆乻etter

Public String execute() {
 unitsList 
= unitDao.listAll();
 
return SUCCESS;
}

UserRegAction鍋囪鍦ㄦ敞鍐屽墠鍙槸doDefault()鐩存帴榪斿洖SUCCESS錛屽彧鏈夊湪Post鏁版嵁鏃跺湪璋冪敤execute()錛屾垜浠氨涓嶅啓絀虹殑浠g爜浜嗐傛垨鑰呬笉閫氳繃浠諱綍Action璋冪敤娉ㄥ唽欏甸潰錛岀洿鎺ヨ皟鐢ㄦ敞鍐岀殑jsp鏂囦歡鐩存帴璁塊棶涔熷彲浠ャ?/P>

鍒頒簡UserRegAction鏄劇ず鐨刅iew錛屾垜榪欓噷鏄疛sp鐗囨柇錛?/P>

<ww:action id="listUnits" executeResult="false" namespace="/" name="unitsListAction" />
<ww:select name="unitId" list="#attr.listUnits.unitsList" listKey="id" listValue="name" required="true"/>

娉ㄦ剰錛宔xecuteResult="false"錛屼篃灝辨槸璇存垜浠笉娓叉煋unitsListAction榪斿洖鐨剉iew錛屽彧鐢ㄥ畠鐨勫箋?BR>鑰岃闂畠鐨勫肩殑鏃跺欒浣跨敤#attr.listUnits.unitsList榪欐牱鐨勫紩鐢紝鍥犱負榪欐椂unitsListAction榪斿洖鐨刅lueStack涓嶆槸欏甸潰鐨刼gnl鐨剅ootStack錛屾垜浠渶瑕佽闂?attr榪欎釜Stack錛岃繖閮ㄥ垎鍙互鍙傝冧竴涓媁ebwork鐨剋iki銆?BR>涓婇潰鎴戠粰unitsListAction瑙勫畾浜嗕竴涓猧d錛岃繖鏍瘋皟鐢ㄦ瘮杈冪伒媧伙紝浣犲彲浠ュ嬈¤皟鐢ㄥ悓涓涓狝ction騫朵笖灝嗗兼斁鍦?attr涓嬬殑涓嶅悓鍦版柟銆?BR>鎴戜滑寮曠敤unitsListAction榪斿洖鐨剈nitsList榪欎釜list鐨勬椂鍊欓渶瑕佺敤#attr鍔犱笂鎴戜滑緇檜nitsListAction璁懼畾鐨刬d錛堝鏋滀笉鎸囧畾id錛屽垯榛樿unitsListAction錛夊啀鍔犱笂浣犺璁塊棶鐨勫彉閲忓悕璁塊棶銆?BR>鍏跺疄寰堢畝鍗曪紝鑰岃繖縐嶆柟寮忓氨鏄紑濮嬭鐨勯〉闈㈡帶鍒跺櫒椋庢牸鐨刟ction澶嶇敤銆傝櫧鐒跺拰鐪熸鐨勫彾闈㈡帶鍒跺櫒鐨凾apestry鍜孞SF鐩稿樊鐢氳繙錛屼絾鏄篃綆楁湁鐐歸偅涓剰鎬濅簡銆?BR>鎵╁睍鐐規兂錛屽鏋滄垜浠湪Action瀹炵幇浜嗕竴涓猚ounter錛屼篃鍙互閫氳繃榪欑鏂瑰紡璋冪敤錛岃繛榪斿洖鐨勫奸兘鍙互蹇界暐錛屽懙鍛碉紝榪欑閫昏緫澶嶇敤榪樻槸鎸烘湁鐢ㄧ殑銆?/P>

鎶涚爾寮曠帀錛屾垜榪欎釜浜鴻璇濆暟鍡︼紝瑙佽皡錛屽氨鍒拌繖閲屻?/P>

Tin 2006-03-10 14:45 鍙戣〃璇勮
]]>
濡備綍緇橶ebwork鐨剅edirect鐨剅esult浼犻掑涓弬鏁?/title><link>http://m.tkk7.com/iamtin/archive/2006/02/24/32290.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Fri, 24 Feb 2006 05:56:00 GMT</pubDate><guid>http://m.tkk7.com/iamtin/archive/2006/02/24/32290.html</guid><wfw:comment>http://m.tkk7.com/iamtin/comments/32290.html</wfw:comment><comments>http://m.tkk7.com/iamtin/archive/2006/02/24/32290.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://m.tkk7.com/iamtin/comments/commentRss/32290.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/iamtin/services/trackbacks/32290.html</trackback:ping><description><![CDATA[<P>浠婂ぉ閬囧埌涓涓棶棰橈紝鍦╓ebwork 2.2閲岄潰緇欎竴涓狝ction鐨剅esult浼犲涓弬鏁幫細<BR>鍘熷厛閰嶇疆濡備笅</P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">action </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="blahblahAction"</SPAN><SPAN style="COLOR: #ff0000"> class</SPAN><SPAN style="COLOR: #0000ff">="blahAction"</SPAN><SPAN style="COLOR: #ff0000"> method</SPAN><SPAN style="COLOR: #0000ff">="blah"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>   </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">result </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="success"</SPAN><SPAN style="COLOR: #ff0000"> type</SPAN><SPAN style="COLOR: #0000ff">="redirect"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/some.action?field1=${field1}</SPAN><SPAN style="COLOR: #ff0000">&field2</SPAN><SPAN style="COLOR: #000000">=${field2}</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">result</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">action</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV> <P>榪愯鏃跺欏嚭鐜板涓嬫彁紺猴細<BR>The reference to entity "field2" must end with the ';' delimiter.<BR>鎴戞湰浠ヤ負鏄疧GNL鐨勯棶棰橈紝鍥涘鎼滃錛屼笉寰楀叾瑙b︹︾湅浜咲TD涔熸病鏈夊彂鐜伴棶棰樸?BR>鍚庢潵淇敼榪囩▼涓獊鐒跺彂鐜板師鏉ユ槸SAX瑙f瀽鍣ㄥ嚭閿欙紝鎴戣繖鎵嶆兂鍒板彲鑳芥槸XML鐨勯棶棰樸?BR>緇忚繃鍐嶄笁鏌ヨ寰楀埌瑙e喅鏂規錛?BR>浣跨敤"&amp;"浠f浛"&"錛屽師鐞嗗拰HTML涓殑杞箟鐩稿悓錛屾垜灞呯劧蹇樿浜哫ML鐨勮娉曡鑼冿紝鎯劎銆?BR>閰嶇疆濡備笅錛?/P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">action </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="blahblahAction"</SPAN><SPAN style="COLOR: #ff0000"> class</SPAN><SPAN style="COLOR: #0000ff">="blahAction"</SPAN><SPAN style="COLOR: #ff0000"> method</SPAN><SPAN style="COLOR: #0000ff">="blah"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>   </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">result </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="success"</SPAN><SPAN style="COLOR: #ff0000"> type</SPAN><SPAN style="COLOR: #0000ff">="redirect"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/some.action?field1=${field1}</SPAN><SPAN style="COLOR: #ff0000">&amp;</SPAN><SPAN style="COLOR: #000000">field2=${field2}</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">result</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">action</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV> <P>宸ヤ綔姝e父浜嗭紒甯屾湜瀵瑰ぇ瀹舵湁鐢ㄣ?BR>榪欏嚑澶╄秴蹇欙紝娌℃庝箞鍐橞log錛岃繕鏄鍕ゅ憖銆?/P><img src ="http://m.tkk7.com/iamtin/aggbug/32290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/iamtin/" target="_blank">Tin</a> 2006-02-24 13:56 <a href="http://m.tkk7.com/iamtin/archive/2006/02/24/32290.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>webwork 2.2 涓浣曠粰Collection璧嬪?/title><link>http://m.tkk7.com/iamtin/archive/2006/02/16/31099.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Thu, 16 Feb 2006 13:19:00 GMT</pubDate><guid>http://m.tkk7.com/iamtin/archive/2006/02/16/31099.html</guid><wfw:comment>http://m.tkk7.com/iamtin/comments/31099.html</wfw:comment><comments>http://m.tkk7.com/iamtin/archive/2006/02/16/31099.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://m.tkk7.com/iamtin/comments/commentRss/31099.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/iamtin/services/trackbacks/31099.html</trackback:ping><description><![CDATA[<P>鍘熸湰javaeye鏈夎繖涔堜竴綃囧笘瀛愨滃湪WebWork2 Action涓浣曡嚜鍔ㄨ緗瓵rray銆丩ist銆丮ap鈥濓紝鏄痬oxie澶у摜鍐欑殑銆?<BR><A >http://forum.javaeye.com/viewtopic.php?t=8770</A> </P> <P>浣嗘槸宸茬粡鏄?004騫?1鏈堢殑鏂囩珷浜嗭紝鍦╳ebwork 2.2 b4涓紝XWorkList鍜孹WorkMap宸茬粡鏄痙eprecated鐘舵佷簡錛屽綋鏃舵垜灝變竴澶撮浘姘達紝涔熸病鎵懼埌浠涔堝ソ鐨勭嚎绱€?<BR>鍘籮ava.net涓嬭澆浜哫Work鐨勬渶鏂頒唬鐮侊紝鐪嬪埌浜嗗叾涓殑娉ㄩ噴錛岃榪欎釜宸ヤ綔宸茬粡鍙互鑷姩瀹屾垚浜嗐?<BR>鍙堝嚑緇忓懆鎶橈紝鎵嶇畻鎼炴槑鐧藉厛鍦ㄥ浣曡List銆丮ap絳夊伐浣滆搗鏉ワ紝緇欎簣2.2 b4鍜宐5宸ヤ綔姝e父錛?</P> <P>涓嬮潰綆鍗曚粙緇嶄竴涓嬶細 <BR>1銆佸鏋滆灝嗗兼槧灝勫埌pojo鐨刢ollection錛屽垯闇瑕佷嬌鐢╟onversion鍔熻兘銆?<BR>濡傛垜鍙堜竴涓狝ction錛屽彨testAction錛?</P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Codehighlighter1_46_804_Open_Image onclick="this.style.display='none'; Codehighlighter1_46_804_Open_Text.style.display='none'; Codehighlighter1_46_804_Closed_Image.style.display='inline'; Codehighlighter1_46_804_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_46_804_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_804_Closed_Text.style.display='none'; Codehighlighter1_46_804_Open_Image.style.display='inline'; Codehighlighter1_46_804_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> testAction </SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000"> ActionSupport </SPAN><SPAN id=Codehighlighter1_46_804_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_46_804_Open_Text><SPAN style="COLOR: #000000">{ <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> Collection smoeAttrs </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">錛堜嬌鐢╳ebwork鑷姩璐熷鹼紝搴旀湁瀵瑰簲getter鍜宻etter錛?nbsp;</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">        </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> IDeptJgzTjkEcoAttDAO ecoAttDAO </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">錛堟敼DAO浣跨敤Spring娉ㄥ叆錛屽簲鏈夌浉搴攕etter錛?nbsp;</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_269_801_Open_Image onclick="this.style.display='none'; Codehighlighter1_269_801_Open_Text.style.display='none'; Codehighlighter1_269_801_Closed_Image.style.display='inline'; Codehighlighter1_269_801_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_269_801_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_269_801_Closed_Text.style.display='none'; Codehighlighter1_269_801_Open_Image.style.display='inline'; Codehighlighter1_269_801_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> String execute() </SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000"> Exception </SPAN><SPAN id=Codehighlighter1_269_801_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_269_801_Open_Text><SPAN style="COLOR: #000000">{ <BR><IMG id=Codehighlighter1_314_401_Open_Image onclick="this.style.display='none'; Codehighlighter1_314_401_Open_Text.style.display='none'; Codehighlighter1_314_401_Closed_Image.style.display='inline'; Codehighlighter1_314_401_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_314_401_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_314_401_Closed_Text.style.display='none'; Codehighlighter1_314_401_Open_Image.style.display='inline'; Codehighlighter1_314_401_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>                </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (log.isDebugEnabled()) </SPAN><SPAN id=Codehighlighter1_314_401_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_314_401_Open_Text><SPAN style="COLOR: #000000">{ <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                        log.debug(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">performing execute() method!</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>                }</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">鎸佷箙鍖朿ollection閲岄潰鐨刾ojo </SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_545_722_Open_Image onclick="this.style.display='none'; Codehighlighter1_545_722_Open_Text.style.display='none'; Codehighlighter1_545_722_Closed_Image.style.display='inline'; Codehighlighter1_545_722_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_545_722_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_545_722_Closed_Text.style.display='none'; Codehighlighter1_545_722_Open_Image.style.display='inline'; Codehighlighter1_545_722_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">                </SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000"> (Iterator iterator </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> smoeAttrs.iterator(); iterator.hasNext();) </SPAN><SPAN id=Codehighlighter1_545_722_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_545_722_Open_Text><SPAN style="COLOR: #000000">{ <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                            SomeAttr someAttr </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (SomeAttr) iterator.next(); <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                            ecoAttDAO.saveOrUpdate(someAttr, someAttr.getId()); <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>                }</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                       </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> Action.SUCCESS; <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV> <P>瀵瑰簲涓涓猵ojo錛?</P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">package</SPAN><SPAN style="COLOR: #000000"> org.tin.test; <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_70_361_Open_Image onclick="this.style.display='none'; Codehighlighter1_70_361_Open_Text.style.display='none'; Codehighlighter1_70_361_Closed_Image.style.display='inline'; Codehighlighter1_70_361_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_70_361_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_361_Closed_Text.style.display='none'; Codehighlighter1_70_361_Open_Image.style.display='inline'; Codehighlighter1_70_361_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> SomeAttr </SPAN><SPAN style="COLOR: #0000ff">implements</SPAN><SPAN style="COLOR: #000000"> Serializable </SPAN><SPAN id=Codehighlighter1_70_361_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_70_361_Open_Text><SPAN style="COLOR: #000000">{ <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_82_120_Open_Image onclick="this.style.display='none'; Codehighlighter1_82_120_Open_Text.style.display='none'; Codehighlighter1_82_120_Closed_Image.style.display='inline'; Codehighlighter1_82_120_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_82_120_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_82_120_Closed_Text.style.display='none'; Codehighlighter1_82_120_Open_Image.style.display='inline'; Codehighlighter1_82_120_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN id=Codehighlighter1_82_120_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</SPAN><SPAN id=Codehighlighter1_82_120_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"> The composite primary key value. </SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> java.lang.Long id; <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> java.lang.Float fild1; <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> java.lang.String fild2; <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> java.util.Date fild3; <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_289_358_Open_Image onclick="this.style.display='none'; Codehighlighter1_289_358_Open_Text.style.display='none'; Codehighlighter1_289_358_Closed_Image.style.display='inline'; Codehighlighter1_289_358_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_289_358_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_289_358_Closed_Text.style.display='none'; Codehighlighter1_289_358_Open_Image.style.display='inline'; Codehighlighter1_289_358_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN id=Codehighlighter1_289_358_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</SPAN><SPAN id=Codehighlighter1_289_358_Open_Text><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                <IMG src="http://m.tkk7.com/images/dot.gif">. <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>                瀵瑰簲鐨刧etter鍜宻etter <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        </SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV> <P>鍙互鐪嬪埌錛屼笂闈㈢殑Action澹版槑鐨勬椂鍊欐病鏈変換浣曟秹鍙婂埌XWorkList鐨勫湴鏂癸紙moxie浠嬬粛鐨勯偅縐嶉鏍鹼級錛屼篃灝辨槸璇寸幇鍦╳ebwork騫朵笉鐭ラ亾Collection閲岄潰鏀劇殑pojo鐨勭被鍨嬨傝繖灝辨槸Webwork鐩墠鐨勯珮鏄庝箣澶勶紝榪欐牱鐨勪唬鐮侀潪甯稿共鍑銆備絾鏄鏋滆鑷姩璁懼畾Collection鐨勫鹼紝璁塊棶鍒拌繖浜汸ojo錛屽垯涓瀹氳鐭ラ亾Pojo鐨勭被鍨嬶紝Webwork濡備綍鍋氬憿錛?<BR>閫氳繃-conversion閰嶇疆銆?<BR>闇瑕佸湪瀵瑰簲璇ユ墠閭d釜testAction.java鐨勭浉鍚岀洰褰曞啓涓涓猼estAction-conversion.properties鏂囦歡錛堟牸寮忓氨鏄疉ction鍚嶅瓧+鈥?conversion.properties鈥濓級銆?<BR>鏂囦歡閲岄潰娉ㄦ槑錛?<BR>Element_someAttrs = org.tin.test.SomeAttr 錛堜互鍓嶇増鏈浘緇忕敤榪嘋ollection銆丮ap鍒嗗紑錛屼絾鏄幇鍦ㄤ笉綆′粈涔堢被鍨嬶紝閮界敤Element錛?<BR>鏍煎紡灝辨槸鈥淓lement_鈥?Action涓瑿ollection鐨勫悕瀛?鈥?鈥?浣犵殑pojo鐨勫畬鏁寸被鍚?</P> <P>濡傛閰嶇疆鍚庯紝鑷姩璁劇疆鍊肩殑鏃跺欏氨鍙互鐭ラ亾浣犵殑pojo鐨勭被鍨嬩簡錛屽緢騫插噣銆?</P> <P>涓嬮潰涓灝忔鐢變簬鎴戞帴瑙ebwork涓嶄箙錛屾墍浠ユ槸涓緢鍒濈駭鐨勭粡楠岋紝濡傛灉闇瑕佸垯鑷彇錛?<BR>鍥炲繂moxie甯栧瓙涓殑閲嶈鐨勯儴鍒嗭紝鍦╬ost鍒扮浉搴攁ction鐨勯〉闈㈢殑form涓紝input瑕侀伒寰繖鏍風殑鍛藉悕錛?<BR>瀵瑰簲鍒氭墠鎵璇寸殑閭d釜pojo錛?</P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">form</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[0].fild1"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="45555.6"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx11"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[0].fild2"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="test"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx12"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[0].fild3"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="2006-01-05"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx13"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[1].fild1"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="45555.6"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx21"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[1].fild2"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="test"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx22"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[1].fild3"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="2006-01-05"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx23"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[2].fild1"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="45555.6"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx31"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[2].fild2"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="test"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx32"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">input  </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[2].fild3"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="2006-01-05"</SPAN><SPAN style="COLOR: #ff0000"> id</SPAN><SPAN style="COLOR: #0000ff">="xxx33"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">form</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV> <P>濡備綍杈撳嚭錛熷緢綆鍗曪紝鍦ㄥ垪琛ㄩ〉涓細 </P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">ww:iterator </SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN style="COLOR: #0000ff">="someAttrs"</SPAN><SPAN style="COLOR: #ff0000"> status</SPAN><SPAN style="COLOR: #0000ff">="someAttrsIter"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">tr</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">ww:hidden </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[%{#someAttrsIter.index}].id"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="%{id}"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">ww:textfield </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[%{#someAttrsIter.index}].fild1"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="%{fild1}"</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">ww:textfield </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[%{#someAttrsIter.index}].fild2 value="</SPAN><SPAN style="COLOR: #ff0000">%{fild2}"</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">ww:textfield </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="someAttrs[%{#someAttrsIter.index}].fild3"</SPAN><SPAN style="COLOR: #ff0000"> value</SPAN><SPAN style="COLOR: #0000ff">="%{fild3}"</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">tr</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">ww:iterator</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV> <P><BR>鍗沖彲浠ワ紝鍥犱負iteratror榪欎釜tag鏀寔iteratroStatus榪欎釜涓滆タ錛岀敤瀹冨彲浠ヨ幏鍙杋ndex銆乮sOdd絳変俊鎭紝寰堟柟渚褲?</P> <P>閰嶅悎 </P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">action </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="saveAction"</SPAN><SPAN style="COLOR: #ff0000"> class</SPAN><SPAN style="COLOR: #0000ff">="testAction"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">result </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="success"</SPAN><SPAN style="COLOR: #ff0000"> type</SPAN><SPAN style="COLOR: #0000ff">="redirect"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/loadByInf.action?id=${someAttrOwner.id}</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">result</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">action</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV> <P>鍒欏緢瀹規槗鐨勫疄鐜板Collection鐨凜RUD銆傛濂界敤鍒頒簡ONGL鐨勯泦涓熀鏈闂柟寮忥細#銆?{}銆?{} </P> <P>浠ヤ笂鍐呭錛岄敊婕忛毦鍏嶃傚洜涓轟粖澶╃粓浜庡彲浠ュ伔闂詫紝璧剁揣緇撶懷璁頒箣銆傛榪庡ぇ瀹惰璁烘洿綆渚跨殑鏂規硶銆?/P> <P> </P><img src ="http://m.tkk7.com/iamtin/aggbug/31099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/iamtin/" target="_blank">Tin</a> 2006-02-16 21:19 <a href="http://m.tkk7.com/iamtin/archive/2006/02/16/31099.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Webwork22b5涓璬atapicker鐨勬湰鍦板寲浣跨敤鏂規硶http://m.tkk7.com/iamtin/archive/2006/02/16/31098.htmlTinTinThu, 16 Feb 2006 13:15:00 GMThttp://m.tkk7.com/iamtin/archive/2006/02/16/31098.htmlhttp://m.tkk7.com/iamtin/comments/31098.htmlhttp://m.tkk7.com/iamtin/archive/2006/02/16/31098.html#Feedback0http://m.tkk7.com/iamtin/comments/commentRss/31098.htmlhttp://m.tkk7.com/iamtin/services/trackbacks/31098.html 鏂囩珷鏃墮棿: 2006-1-05 19:00:49    鏍囬: Webwork22b5涓璬atapicker鐨勬湰鍦板寲浣跨敤鏂規硶 寮曠敤鍥炲 緙栬緫/鍒犻櫎鏂囩珷 灝嗚繖涓笘瀛愬姞鍏ユ垜鐨凚log
浠呬綔涓鴻褰曪紝灝介噺綆鏄庯細
1銆佹垜浣跨敤Weblogic 8.1 SP5+Webwork 2.2 beta 5銆?.2b5鐨刉ebwork宸茬粡瀹屽叏杞悜浣跨敤jscalendar浣滀負datapicker鐨刯s錛岃屼笉鏄互鍓嶇殑tigracalendar錛屽洜涓簍igracalendar涓嶆敮鎸佸浗闄呭寲銆俉eb欏圭洰浣跨敤FilterDispatcher錛屾湰搴旀敼鍙互灝?webwork/*鐨勮姹傛嫤鎴笅鏉ワ紝浣嗘槸瀹冨伐鍋氫笉姝e父銆傛墍浠ユ垜鎶妛ebwork.jar閲岄潰鐨刓com\opensymphony\webwork\static鐩綍鎷瘋礉鍒癢eb鏍圭洰褰曪紝騫跺皢static鐩綍閲嶅悕鍚嶄負webwork銆?
姝ゆ椂錛屼綘鐨刉eb鏍圭洰褰曚笅闈㈠簲鏈変竴涓悕涓簑ebwork鐨勭洰褰曪紝閲岄潰鏈塲scalendar銆乨ojo銆乶iftycorners榪欏嚑涓枃浠跺姞錛屽鏋滀笉闇瑕佸叾瀹冪殑錛屽彲浠ュ彧淇濈暀jscalendar涓涓洰褰曘?
2銆佸湪闇瑕佹樉紺篸atapicker鐨勫湴鏂逛嬌鐢ㄥ涓嬫爣璁?lt;ww:datepicker name="ecoInf.turninDate" id="ecoInf.turninDate" template="datepicker.ftl" language="cn_utf8" format="%Y-%m-%d %H:%M:%S" showstime="true" />銆?
鍏朵腑template瀹屽叏鍙互涓嶅啓銆傝宯ame鏍囨槑浣犵殑鏁版嵁鐨勬潵婧愩俰d鏄柟渚縥avascript璁塊棶鎵淇濈暀鐨勶紝鍙互鍜宯ame鐩稿悓錛堝鏋滄湁閲嶅name錛屽緇忚繃iterator錛屽垯闇瑕佸尯鍒叾id錛屼繚鎸乮d鍦╤tml dom涓敮涓錛夈?
showstime鏍囨槑鏄惁鍙互閫夋嫨鏃墮棿錛屽彲浠ユ槸"true"錛?false"錛?24"錛?12"銆?
language鍐沖畾jscalendar浣跨敤鐨勮璦錛屽弬鐓т笅闈㈣鏄庛?
3銆乴anguage鎸囧畾鐨勮璦鍏跺疄灝卞搴攋scalendar/lang涓嬮潰鐨勮璦鏂囦歡錛屾牸寮忓氨鏄痗alendar-璇█鍚?js錛岄粯璁ょ殑涓枃浣跨敤鐨勬槸zh銆備絾鏄叾瀹瀓2ee欏圭洰緇忓父闈㈠涓枃涔辯爜闂錛屾渶浣寵В鍐蟲柟妗堝氨鏄粺涓浣跨敤UTF-8銆備絾鏄痗alendar-zh.js姝eソ涓嶆槸UTF-8鐨勶紝鎵浠ュ鏋滅洿鎺ヤ嬌鐢▃h璇█鍒檇atapicker娌℃硶姝e父宸ヤ綔銆?
鎴戠殑瑙e喅鏂規硶鏄皢webwork闄勫甫鐨刯scalendar 1.0鐨刲ang閲岄潰鐨刢n_utf8.js鏀瑰悕涓篶alendar-cn_utf8.js錛岀劧鍚庡皢language="cn_utf8"灝卞伐浣滄甯鎬簡銆?
4銆佸叧浜庢椂闂寸殑鏄劇ず鏍煎紡銆傚叾瀹瀋n_utf8.js閲岄潰宸茬粡鍒跺畾浜嗘椂闂寸殑鏍囧噯鏄劇ず鏍煎紡鏄?Y-%m-%d錛岀鍚堟垜浠殑涔犳儻銆備絾鏄湁鏃舵垜浠渶瑕佹樉紺哄叿浣撴椂闂達紝鍙傜収浠栦滑緗戠珯鐨勮鏄庯紝浣跨敤format="%Y-%m-%d %H:%M:%S"錛岃繖涓篃絎﹀悎鎴戜滑鐨勪範鎯?

鍙戜釜鐗㈤獨錛?
鏈潵濂囩畝鍗曘備絾鏄緢濂囨?webwork/*灞呯劧涓嶈兘鍦╓eblogic涓嬭嚜鍔ㄦ槧灝勶紝鎴戜竴浼氳屽幓璇曢獙涓婽omcat錛岃繕鏈夊氨鏄痡s瑙f瀽utf-8鍑洪敊閫犳垚鏁翠釜js娌℃硶宸ヤ綔錛屾氮璐逛簡鍗婂ぉ鏃墮棿錛屽攭銆?

鐩稿叧閾炬帴錛?
2.2 beta 5鐨刣atapicker鐨刣oc錛?
http://wiki.opensymphony.com/display/WW/datepicker
jscalendar鐨勫畼鏂圭綉绔欙細
http://www.dynarch.com/projects/calendar/
jscalendar鐨勪嬌鐢ㄦ柟娉曠畝鍗昫emo錛?
http://www.dynarch.com/demos/jscalendar/
jscalendar涓嬭澆錛?
http://prdownloads.sourceforge.net/jscalendar/jscalendar-1.0.zip?download
datapicker鏈湴鍖栫殑鐩稿叧璁ㄨ錛?
http://forums.opensymphony.com/thread.jspa?messageID=21466
http://forums.opensymphony.com/thread.jspa?messageID=21526


鏄ㄥぉ璇磋璇曢獙涓涓嬪湪tomcat涓嬮潰鐨?webwork/*鐨勬槧灝勬槸鍚﹀伐浣滄甯搞?
緇忚繃璇曢獙鍦╰omcat涓嬮潰宸ヤ綔姝e父錛屾墍鏈塩om.opensymphony.webwork.static涓嬮潰鐨勪笢瑗塊兘鍙互鑷姩鏄犲皠鍒?webwork/*涓嬮潰銆?

涔熷氨鏄鍙堟槸Weblogic鐨勫掗湁闂鈥︹︾儲鍟娿?

涔熷氨鏄涓嶇敤Webloigic 8.1鐨勬湅鍙嬩滑灝卞彲浠ヨ煩榪囩涓姝ヤ簡銆?

鏈夌殑鏈嬪弸鍙兘娌℃湁2.2 beta5錛屽彲浠ュ幓榪欓噷涓嬭澆nightly build錛岃阿璋scud涓婃鎻愪緵榪欎袱涓摼鎺ワ細
http://ivyrep.opensymphony.com/opensymphony/webwork/
榪樻湁瀵瑰簲鐨剎work錛?
http://ivyrep.opensymphony.com/opensymphony/xwork/

榪欐槸涓綃囪佸笘瀛愪簡錛屽凡緇忎笉鏄渶鏂幫細
http://forum.javaeye.com/viewtopic.php?t=17936&highlight=


Tin 2006-02-16 21:15 鍙戣〃璇勮
]]>
Webwork 2.2鐨凙ction鏄惁浣跨敤Spring鐨刾rototype顱鑾峰彇鐨勬ц兘瀵規瘮http://m.tkk7.com/iamtin/archive/2006/02/14/30699.htmlTinTinTue, 14 Feb 2006 13:48:00 GMThttp://m.tkk7.com/iamtin/archive/2006/02/14/30699.htmlhttp://m.tkk7.com/iamtin/comments/30699.htmlhttp://m.tkk7.com/iamtin/archive/2006/02/14/30699.html#Feedback0http://m.tkk7.com/iamtin/comments/commentRss/30699.htmlhttp://m.tkk7.com/iamtin/services/trackbacks/30699.html闃呰鍏ㄦ枃

Tin 2006-02-14 21:48 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲av午夜成人片精品电影| 亚洲午夜精品一区二区公牛电影院 | 亚洲六月丁香六月婷婷蜜芽 | 免费看一级一级人妻片| 亚洲欧洲日产国码www| 亚洲欧洲一区二区三区| 日韩视频免费在线| 青青青国产在线观看免费网站| 成全视频高清免费观看电视剧 | 日本中文一区二区三区亚洲| 久久WWW免费人成人片| 久久青草免费91线频观看不卡 | 国产成人aaa在线视频免费观看| 黄在线观看www免费看| 免费精品99久久国产综合精品| 乱爱性全过程免费视频| 亚洲av永久无码一区二区三区| 亚洲一区二区三区免费观看| 18亚洲男同志videos网站| 亚洲国产精彩中文乱码AV| 中文字幕精品亚洲无线码一区| 全部免费毛片在线| 国产男女猛烈无遮挡免费视频 | 亚洲成人免费网址| 亚洲美女视频免费| 亚洲免费在线视频| 麻豆亚洲AV永久无码精品久久| 国产亚洲一区二区精品| 亚洲日产韩国一二三四区| 国产亚洲美日韩AV中文字幕无码成人 | 精品国产免费观看久久久| 成人奭片免费观看| 日韩精品福利片午夜免费观着| 2020久久精品国产免费| 色片在线免费观看| 无码区日韩特区永久免费系列| 曰曰鲁夜夜免费播放视频| 日韩精品成人无码专区免费| 妞干网在线免费视频| 免费无码成人AV片在线在线播放| 成人午夜免费福利|