0

JSF1.2 と Seam 2.2.0 で prettyfaces 3.1.0 を使用しています。次の pretty-config.xml があります。

<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 Bean:

@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;
}

マッピング パターンは正常に動作しますが、常に次の例外が発生します。

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)

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

4

1 に答える 1

2

何かが Seam ConversationContext の復元を妨げているようです。

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

于 2010-12-16T03:55:13.047 に答える