锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 棣栧厛浣跨敤JBossTools宸ュ叿鐢熸垚欏圭洰錛屽湪鐢熸垚欏圭洰鐨勫悜瀵間腑錛屽鏋滈」鐩被鍨嬮夋嫨ear錛屽垯浼氱敓鎴愬洓涓」鐩紝鍒嗗埆瀵瑰簲war銆乪ar銆乪jb銆乼est錛岃寰楄繖鏍峰お榪囩箒鐞愶紝榪樻槸閫夋嫨war綾誨瀷錛屽張鎯寵涓嶄嬌鐢╰omcat浣滀負榪愯鏈嶅姟鍣ㄥ惂錛屽洜涓篔Boss涔熶笉澶啛鎮夈傛病鎯沖埌榪欎竴璇曞掕瘯鍑洪棶棰樻潵浜嗭紝濡傛灉瀹屽叏浣跨敤鍚戝鐢熸垚欏圭洰錛岄夋嫨tomcat浣滀負榪愯鏈嶅姟鍣紝鍒欓」鐩牴鏈棤娉曡繍琛岃搗鏉ワ紝鎬繪槸鎻愮ず緙哄皯榪欎釜jar錛岄偅涓猨ar銆傚ソ錛屽張鎹㈠洖JBoss錛屾病闂浜嗐備粩緇嗙湅浜嗕竴涓嬶紝鍘熸潵鍦ㄨ嚜鍔ㄧ敓鎴愰」鐩殑WebContent/WEB-INF/lib鐩綍涓紝鍙湁澶ф鍗佸嚑涓猨ar錛岃繛Hibernate鐨刯ar閮芥病鏈夛紝鑰屽湪JBoss鐨凷erver/default/lib鐩綍涓嬪垯浠涔坖ar閮芥湁錛屾笉寰椾笉鍑洪敊銆?/p>
絎竴涓暀璁細榪樻槸鍏堜嬌鐢↗Boss浣滀負榪愯鐜錛岀瓑鏁翠釜Seam閮芥悶鐔熶簡錛屽啀閰嶄竴涓猅omcat鐨勮繍琛岀幆澧冦?/strong> 緇х畫錛屽皢鍘熸潵欏圭洰涓殑涓涓氱敤DAO鍜屼竴涓猆serService鎷瘋礉榪囨潵錛屼唬鐮佸涓嬶紝鍚姩鏈嶅姟鍣ㄦ姤閿欍傚垎鍒負濡備笅閿欒淇℃伅錛?/p>
絎簩涓敊璇В鍐籌細Caused by: java.lang.IllegalArgumentException: @PersistenceContext may only be used on session bean or message driven bean components: genericDao 鏃㈢劧鎻愮ず@PersistenceContext鍙兘鐢ㄥ湪SessionBean涓紝鍥犱負鍘熸潵鐨勪唬鐮佹槸浣跨敤鐨凷pring妗嗘灦錛屾兂浜嗗ソ闀挎椂闂達紝鍦╓ebContent/WEB-INF/component.xml涓湅鍒拌繖涔堜竴孌碉紝閭d箞鏄笉鏄氳繃@In鏉ユ敞鍏ntityManager鍛紝淇敼@PersistenceContext涓篅In錛岀紪杈戝櫒鑷姩鎻愮ず娌℃湁鍙戠幇鍚嶇О涓篹m鐨凜omponent錛堣繖鐐瑰ソ鍍忎笉閿欙級錛屼簬鏄啀淇敼涓?/font>@In("entityManager") 錛岄噸鍚湇鍔″櫒錛岃闂瑙e喅銆?/font> 絎笁涓敊璇В鍐籌細Caused by org.jboss.seam.RequiredException with message: "@In attribute requires non-null value: userService.genericDao" 灝哢serService涓殑@In淇敼涓?font color="#0080c0">@In(create = true, required = true)瑙e喅姝ら棶棰樸?/font> 瑙e喅涓婅堪鍑犱釜闂鍚庯紝鑷繁鐨勪緥瀛愮粓浜庤繍琛岃搗鏉ヤ簡 :-) 涓嬩竴綃囧叧浜嶴eam In Action涓JSF鐨勪粙緇嶅強Seam濡備綍澧炲己JSF銆?/p>
------------------------------------------------------------------------------------------------- 欏圭洰鐢熸垚鐨勪唬鐮佽鍒嗕負涓や釜鐩綍錛屽垎鍒負Action鍜孧odel鐩綍錛屾鏌Boss涓」鐩儴緗茬殑鐩綍錛屽彂瑙堿ction鐩綍涓嬬殑浠g爜緙栬瘧鐢熸垚鐨刢lass鏂囦歡琚瓨鏀捐嚦WEB-INF/dev鐩綍涓嬶紝Model鐩綍涓嬬殑浠g爜緙栬瘧鐢熸垚鐨刢lass鏂囦歡琚瓨鏀捐嚦WEB-INF/classes鐩綍涓嬶紝google浜嗕竴涓嬶紝鍙戠幇鍦⊿eam Reference涓彁鍒拌繖鏄疭eam鐨勫閲忓紡閲嶉儴緗詫紝鏀寔瀵笿avaBean緇勪歡鐨勫閲忛噸閮ㄧ講錛屽彲浠ュ姞蹇紪杈?緙栬瘧/嫻嬭瘯鐨勯熷害銆?/font> 浠g爜濡備笅錛?/p>
閫氳繃榪欎釜瀹炶返錛屽皬緇撲竴涓嬶細 1銆佸彂瑙塖eam紜疄綆鍖栦簡JSF寮鍙戯紝浣嗙敱浜庡畠娑夊強鐨勬柊涓滆タ鐩稿杈冨錛屼笌浼犵粺鐨凷SH璧扮殑璺嚎涓嶅お涓鑷達紝榪樻槸瑙夊緱鍏跺涔犳洸綰挎瘮杈冮櫋宄紝闇瑕佸Seam鐔熺粌鎺屾彙鍚庯紙鍖呮嫭寮鍙戠幆澧冪殑鎼緩絳夛級鎵嶈兘鐪熸鎻愰珮寮鍙戞晥鐜囥?/p>
2銆丼eam鎻愪緵浜咺OC鐨勫姛鑳斤紝鏈夋椂闇瑕佽煩鍑篠pring錛屼粠涓涓柊鐨勮搴﹀幓瀹¤Seam銆?/p>
1銆佺敓鎴怱em web欏圭洰 2銆佽緭鍏ラ」鐩殑鐩稿叧淇℃伅錛屽涓嬪浘錛?/p> 娉ㄦ剰錛屽鏋滄槸絎竴嬈′嬌鐢‥clipse錛岄渶瑕侀厤緗甌arget Runtime鍜孴arget Server銆?/p> 3銆佺劧鍚庝竴璺痭ext錛屽埌鏈鍚庝竴姝ユ椂錛屽鏋滄槸絎竴嬈′嬌鐢紝涔熻娉ㄦ剰閰嶇疆Seam Runtime鍜孋onnection Profile錛屽涓嬪浘銆傛渶鍚庣偣鍑籪inish鎸夐挳錛屽嵆鍙垱寤篠eam欏圭洰銆?/p> 4銆佺敓鎴愰」鐩悗錛屽湪Eclipse涓叡鍑虹幇浜嗗洓涓」鐩紝濡備笅錛?/p> 姝ゆ椂榪愯JBossServer鏈嶅姟鍣紝璁塊棶http://localhost:8080/seamfirst閾炬帴錛屽嚭鐜板涓嬪浘欏甸潰錛屾鏃禨eam甯垜浠敓鎴愪簡涓涓鏋訛紝鍖呭惈浜嗗熀鏈殑鐧誨綍鍜岄鍑哄姛鑳斤紝榪樻湁涓涓欏點?/p> 5銆佺戶緇紒浣跨敤Seam鐢熸垚鍗曡〃鐨凜RUD鎿嶄綔銆傛湰姝ラ鍓嶆彁錛屾湁涓涓猰ysql鏁版嵁搴擄紝鏁版嵁搴撲腑鏈変竴涓狢ustomer琛紝璇ヨ〃鏈塈D錛坕nt綾誨瀷錛夈乧ustomername錛坴archar2綾誨瀷錛夈乧ustomerdesc錛坴archar2綾誨瀷錛夈乧reatedate錛坉ate綾誨瀷錛夈乪mail錛坴archar2綾誨瀷錛変簲涓瓧孌點傚湪seamfirst欏圭洰涓婄偣鍑誨彸閿紝閫夋嫨Seam Generate Entities鑿滃崟錛屽脊鍑虹晫闈㈠涓嬪浘錛?/p> 鍗曞嚮finish鎸夐挳鍚庯紝鍐嶈繍琛孞Boss Server鏈嶅姟鍣紝璁塊棶http://localhost:8080/seamfirst錛屽彂瑙夎彍鍗曟爮涓婂浜嗕竴涓狢ustomer List鑿滃崟錛屽崟鍑繪閾炬帴錛屽嵆鍙繘琛孋ustomer鐨勬坊鍔犮佸垹闄ゃ佷慨鏀廣佹煡璇㈡搷浣滐紝铏界劧鐢熸垚鐨勭晫闈笉鏄緢濂界湅錛屼篃涓嶆槸寰堢鍚堟垜鑷繁鐨勬搷浣滀範鎯紝浣嗘槸鍔熻兘鍊掓槸瀹屽銆?/p> 浠ュ悗鑻ユ槸淇敼浜哠eam鎻愪緵鐨勪唬鐮佽嚜鍔ㄧ敓鎴愮殑妯℃澘錛岀劧鍚庡啀浣跨敤璇ュ姛鑳斤紝鎯沖繀鐢熸垚鐨勯〉闈㈠氨絎﹀悎鑷繁鐨勯」鐩姹備簡錛岃涓嬩竴絎旓紝鍏堜笉綆″畠銆?/p> 鐢熸垚鐨勪唬鐮佸垎鏋愶細 鐢熸垚鐨勪唬鐮佷富瑕佹湁涓ら儴鍒嗭紝涓閮ㄥ垎涓篔ava浠g爜錛屼竴閮ㄥ垎涓洪〉闈唬鐮併?/p> Java浠g爜鍖呮嫭濡備笅涓変釜綾伙細 CustomerHome鍜孋ustomerList綾諱腑閮戒嬌鐢ㄤ簡@Name annotation錛岃繖鏍峰湪欏甸潰涓氨鍙互鐩存帴璁塊棶Session Bean涓殑鏂規硶浜嗭紝杈懼埌浜哠eam灝嗚〃鐜板眰鍜屼笟鍔″眰鐩存帴铻嶅悎鐨勭洰鏍囥?/p> 欏甸潰浠g爜鍖呮嫭濡備笅鏂囦歡錛?/font> 鍒氬紑濮嬬湅榪欐浠g爜鏃訛紝鍥版儜鎴戠殑鏈変袱涓湴鏂?/p> 鑷蟲絎竴涓嬌鐢↗BossTools鐢熸垚鐨凷eam渚嬪瓙瀹屾垚浜嗭紝濂藉儚寰堢畝鍗?:-)
public Object get(Class clazz, Serializable id);
public void save(Object object);
public void update(Object object);
public void remove(Class clazz, Serializable id);
public void remove(Object obj);
}
@Name("genericDao")
public class GenericDaoImpl implements GenericDao {
@PersistenceContext ----> @In("entityManager")
private EntityManager em;
public Object get(Class clazz, Serializable id) {
if (id == null) return null;
else return em.find(clazz, id);
}
}
public interface UserService {
public void findAllUsers();
}
@Name("userService")
public class UserServiceImpl implements UserService, SecurityUserService {
@In ----> @In(create = true, required = true)
protected GenericDao genericDao;
private List<User> resultList = null;
public List<User> getResultList() {
if (resultList == null) {
this.findAllUsers();
}
return resultList;
}
public void setResultList(List<User> resultList) {
this.resultList = resultList;
}
public void findAllUsers() {
String hql = "from User order by userCode";
resultList = this.genericDao.query(hql);
}
}
// 瀹炰綋綾?br />
@Entity
@Table(name = "USER")
public class User implements IUser, Serializable {
// 鐢ㄦ埛緙栫爜
@Id
private String userCode;
// 鐢ㄦ埛濮撳悕
private String userName;
}
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
template="layout/template.xhtml">
<ui:define name="body">
<rich:panel>
<f:facet name="header">User Search Results</f:facet>
<rich:dataTable id="userServiceTable"
var="user"
value="#{userService.resultList}">
<h:column>
<f:facet name="header">
<h:outputText value="UserCode"/>
</f:facet>
<h:outputText value="#{user.userCode}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="UserName"/>
</f:facet>
<h:outputText value="#{user.userName}"/>
</h:column>
</rich:dataTable>
</rich:panel>
</ui:define>
</ui:composition>
Exception during request processing:
Caused by java.lang.IllegalStateException with message: "No phase id bound to current thread (make sure you do not have two SeamPhaseListener instances installed)"
org.jboss.seam.contexts.PageContext.getPhaseId(PageContext.java:163) org.jboss.seam.contexts.PageContext.isBeforeInvokeApplicationPhase(PageContext.java:175) org.jboss.seam.contexts.PageContext.getCurrentWritableMap(PageContext.java:91) org.jboss.seam.contexts.PageContext.remove(PageContext.java:105) org.jboss.seam.Component.newInstance(Component.java:2102) org.jboss.seam.Component.getInstance(Component.java:1987) org.jboss.seam.Component.getInstance(Component.java:1966) org.jboss.seam.Component.getInstance(Component.java:1960) org.jboss.seam.Component.getInstance(Component.java:1933) org.jboss.seam.Component.getInstance(Component.java:1928) org.jboss.seam.faces.FacesPage.instance(FacesPage.java:92) org.jboss.seam.core.ConversationPropagation.restorePageContextConversationId(ConversationPropagation.java:84) org.jboss.seam.core.ConversationPropagation.restoreConversationId(ConversationPropagation.java:57) org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:389) org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:228) org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:194) com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114) com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177) org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267) org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507) org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:54) org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) java.lang.Thread.run(Thread.java:619)
Google浜嗕竴涓嬶紝鏈変漢璁叉槸JBoss4.2.3GA鐗堟湰鐨凚UG錛岃刀绱т笅杞戒簡JBoss4.2.2GA錛屽啀嫻嬭瘯涓鍒囨甯革紒
涓嶇煡榪樹細涓嶄細鏈夊叾瀹冭帿鍚嶇殑BUG浜?.....
鍙堝湪婊℃睙綰㈢殑緗戠珯涓婃壘浜唖eam_reference2.0鐨勪腑鏂囨枃妗o紝涓昏鐪嬩簡銆妕he contextual component model銆嬩竴绔狅紝鐪嬪畬浠ュ悗鎰熻Seam鏈鏍稿績鐨勫湴鏂瑰氨鏄叾contextual component model浜嗭紝涓嶈繃鐪嬪畬榪欎竴绔犱互鍚庡彧鏄Seam鏈変釜澶ф鐨勪簡瑙o紝瀵瑰叾鍏蜂綋鐨勫唴瀹癸紝緇嗚妭榪樼己涔忚繘涓姝ョ殑浜嗚В錛屽鍏朵紭鐐廣佺己鐐逛篃緙轟箯榪涗竴姝ョ殑璁よ瘑銆?/p>
鐒跺悗鍙堟壘鍒頒簡銆奡eam in Action銆嬬殑鐢靛瓙涔︼紝鐪嬩簡涓鐐逛箣鍚庤繕鏄寰楄繖鏈數瀛愪功鍐欏緱濂斤紝鍐呭緇勭粐鐨勫緢濂斤紝涓嶈薄seam_reference鍚庨潰鐨勭珷鑺備粎浠呮槸緗楀垪seam鐨勫悇欏瑰姛鑳姐?/p>
浠婂ぉ鎶奡eam in Action鐨勭涓绔犺崏鑽夌湅浜嗕竴閬嶏紝灝嗙涓绔犺榪扮殑鍐呭鎬葷粨濡備笅錛?/p>
1銆佷粈涔堟槸Seam
鍦⊿eam in Action涓紝娌℃湁灝哠eam縐頒箣涓簑eb framework錛岃屾槸灝嗗叾縐頒負application stack銆係eam灝咼ava EE涓殑EJB3銆丣SF銆丣PA/Hibernate銆丣AAS絳夋妧鏈瀺鍚堝湪涓璧鳳紝鎻愪緵浜嗘洿瀹規槗浣跨敤鐨勬柟寮忥紝姣斿conversation銆乸age flows銆乥uisness precesses銆乺ule-based security銆丣avaScript(Ajax) remoting銆丳DF rendering銆乪mail緇勫悎銆乧harting銆乫ile uploads銆丟roovy integration絳夛紝鐢ㄤ互綆鍖杦eb寮鍙戙?/p>
2銆丼eam鐨勭洰鏍?
綆鍖杦eb寮鍙?
3銆丼eam濡備綍闆嗘垚鍚勭被鎶鏈?/p>
Seam闆嗘垚浜咼SF銆丣PA鍜孭OJO Component
鍦⊿eam涓皢EJB3.0涓殑Session Bean浣滀負JSF鐨刴anaged bean錛岀洿鎺ュ皢琛ㄧ幇灞傚拰涓氬姟灞傝鎺ュ湪涓璧鳳紝浣垮緱Session Bean鍙互鐩存帴璁塊棶web鐩稿叧鏁版嵁錛屾瘮濡俽equest銆乻ession銆乤pplication銆丣SF鐨凢acesMessage銆丆omponent Tree絳夈傝屽湪涓嶄嬌鐢⊿eam鏃訛紝涓鑸兘鏄嬌鐢↗SF back bean鏉ヤ綔涓鴻〃鐜板眰鍜屼笟鍔″眰涔嬮棿鐨勪腑浠嬨?
浣跨敤annotation涓殑@Name鏍囨敞鏇夸唬浜咼SF鐨刦aces-config.xml涓叧浜巑anaged bean鐨勯厤緗?
Seam涓嶄竴瀹氬繀欏諱嬌鐢‥JB鍜孞PA錛屼篃鍙互浣跨敤POJO銆丠ibernate浣滀負鏇夸唬銆傚涓嬪浘錛?/p>
涓婁笅鏂囩浉鍏崇殑緇勪歡妯″瀷錛圫eam涓殑鏍稿績姒傚康錛?/font>
Seam鎻愪緵浜?縐嶇被鍨嬬殑涓婁笅鏂囷紝鍏朵腑灞炰簬Seam鐗規湁鐨勪袱縐嶄笂涓嬫枃綾誨瀷鍒嗗埆涓猴細Conversation Context銆丅usiness process Context銆?
Seam鎻愪緵浜嗙粺涓鐨勭粍浠舵敞鍐屻乤nnotation銆佸紓甯擱厤緗佹柟娉曟嫤鎴佺粺涓鐨凟L琛ㄨ揪寮忕瓑鍔熻兘銆傚叾涓璖eam瀵瑰叾綆$悊鐨勭粍浠舵嫤鎴繃紼嬪涓嬪浘錛?/p>
4銆丼eam鐨勬牳蹇冪珵浜夊姏
- Seam瀵笿SF鏈琚鍙殑鏀硅繘灝辨槸娑堥櫎浜嗗湪閰嶇疆鏂囦歡涓0鏄巑anaged bean銆?
- Prerender page actions
- Managed request parameters (for a given page)
- Intelligent stateless and stateful navigation
- Transparent JSF data model and data model selection handling
- Fine-grained exception handling
- Page-level security (per view ID)
- 鍩轟簬Annotation鐨勮〃鍗曢獙璇?
- Bookmarkable command links (solving the “everything is a POST” problem)
- Entity converter for pick lists
- Conversation controls
- Support for preventing lazy initialization exceptions and nontransactional data access in the view
鐢ㄤ竴騫呭浘鍙互寰堝ソ鐨勮鏄庤繖鍙ヨ瘽鐨勫惈涔?/p>
寮曞叆浜嗘湁鐘舵佺殑鍙橀噺鑼冨洿錛圛NTRODUCING STATEFUL VARIABLE SCOPES錛?/p>
Spring涓彁渚涗簡The Session In View Filter錛屼嬌寰梡ersistence manage鍙互鍦ㄤ竴涓姹備腑瀛樺湪錛岄伩鍏嶄簡甯歌鐨凩azyInitializationException銆傚湪Seam涓紝鎵╁睍鐨凱ersistence Context鍙互璺ㄨ秺澶氫釜璇鋒眰銆傚叾瀹炴墿灞曠殑Persistence Context鏄疌onversation Context銆丅usiness Process Context鐨勫熀紜銆?/p>
Seam鎻愪緵浜嗕袱縐嶆柟寮忓皢Ajax闆嗘垚鍒癝eam搴旂敤涓紝涓縐嶆槸浣跨敤鍏鋒湁Ajax鐗規х殑JSF緇勪歡錛屽RichFaces鍜孖CEFaces錛屽彟涓縐嶆槸鍙互鍦ㄦ祻瑙堝櫒涓嬌鐢↗avaScript鐩存帴璋冪敤鏈嶅姟绔殑緇勪歡銆?/p>
Seam榪樻彁渚涗簡鍙﹀涓縐嶆剰涔変笂鐨凴ich錛屽嵆灝哖DF銆乵ail絳夊姛鑳介泦鎴愬埌Seam搴旂敤涓?/p>
浠庣洰鍓嶆垜涓漢鐨勭悊瑙f潵鐪嬶紝Seam鐨勪綔鐢ㄤ笌鑳藉姏濡備笅錛?/p>
浣嗙敱浜嶴eam鏁村悎浜嗗姝ゅ鐨勬鏋訛紝甯︽潵鐨勪竴涓渶澶х殑緙虹偣錛?font color="#ff0000">瀛︿範鏇茬嚎闄″抄錛屽湪SSH闈炲父嫻佽鐨勪粖澶╋紝闇瑕侀潰瀵瑰緢澶氭柊鎶鏈紙JSF銆丒JB3銆丣PA絳夛級錛屽浜庝竴涓柊鎵嬫潵璇撮毦搴︽瘮杈冨ぇ錛屽鏋滄兂浣縎eam琚洿澶氱殑寮鍙戜漢鍛樹嬌鐢紝蹇呴』鍔犲己瀹冪殑鏂囨。錛岀洰鍓嶇殑鏂囨。榪樻槸澶皯浜嗐?/p>
瀛︿範JBossSeam涔嬪墠鏈濂藉鐩稿叧鎶鏈湁涓瀹氱殑浜嗚В錛屾瘮濡傦細
鐒跺悗涓嬭澆鐩稿叧鐨勮蔣浠訛紝濡備笅錛?/p>
鐜鐨勯厤緗兘姣旇緝綆鍗曪紝鍩烘湰閮芥槸瑙e帇鍗沖彲錛屾湁濡備笅娉ㄦ剰浜嬮」錛?/p>
涓婅堪閰嶇疆濂藉悗錛屽惎鍔↗Boss Server錛岀劧鍚庤嚦SEAM_HOME錛堝亣瀹氫負Seam鐨勫畨瑁呯洰褰曪級/examples/registration鐩綍涓嬶紝榪愯ant explode鍛戒護錛屽嵆鍙紪璇戦儴緗瞨egistration搴旂敤鑷矹Boss Server涓紝鏈鍚庤闂細http://localhost:8080/seam-registration 鍗沖彲浣撻獙Seam鎻愪緵鐨勭涓涓猠xample紼嬪簭 :-)
http://www.javaworld.com.tw/roller/ingramchen/entry/2005_9_20_JBossSeamKingofStateful_