2010-12-15 12 views
0

JSF1.2とSeam 2.2.0でprettyfaces 3.1.0を使用しています。SeamとPrettyfaces

WARNING: Cannot create Seam component, scope is not active: accountAction(PAGE) WARNING: JSF1053: (Listener: com.ocpsoft.pretty.faces.event.PrettyPhaseListener.afterPhase(), Phase ID: RESTORE_VIEW 1, View ID: /WEB-INF/view/account/account.xhtml) Exception thrown during phase-listener execution: com.ocpsoft.pretty.PrettyException: Exception occurred while processing Target Unreachable, identifier 'accountAction' resolved to null WARNING: com.ocpsoft.pretty.faces.beans.ActionExecutor.executeActions(ActionExecutor.java:68) com.ocpsoft.pretty.faces.event.PrettyPhaseListener.processEvent(PrettyPhaseListener.java:204) com.ocpsoft.pretty.faces.event.PrettyPhaseListener.afterPhase(PrettyPhaseListener.java:103) 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:102) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) SEVERE: swallowing exception\ java.lang.IllegalStateException: No active conversation context at org.jboss.seam.faces.FacesMessages.instance(FacesMessages.java:352) at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:484) at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:148) at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:118) at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:96) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

:しかし、私はいつも次の例外を取得し、

@Name("accountAction") 
@Scope(value = ScopeType.PAGE) 
public class AccountAction { 
@RequestParameter("accountId") 
private Long accountId; 

@Out(scope = ScopeType.PAGE) 
@In(required = false, scope = ScopeType.PAGE) 
private AccountDTO accountDto; 
} 

マッピングパターンが正常に動作します:

<url-mapping id="accountInfo"> 
    <pattern value="/account/#{accountId}/" /> 
    <view-id>/WEB-INF/view/account/account.seam</view-id> 
    <action onPostback="false">#{accountAction.loadAccountInformation}</action> 
</url-mapping> 

とSeam豆:私は、次のかなり-config.xmlのを持っています

私は何が間違っていますか? ありがとう

答えて

2

Seam ConversationContextの復元が妨げられているようです。

解決できない場合は、たとえばRENDER_RESPONSEなどの別のフェーズでアクションを呼び出すことで回避できます。それが遅すぎる場合は、アカウント情報を読み込むための遅延初期設定スタイルのアプローチを使用することをお勧めします。 (たとえば、getAccountInfo()メソッドでローカルフィールドとヌルチェックを使用しています)。

+0

リンカーンさん、ありがとうございます。はい、あなたは正しいです。私はアクションのフェーズIDをRENDER_RESPONSEに変更することでこれを修正しました。 – mastanik