2010-12-15 29 views
0

J'utilise prettyfaces 3.1.0 avec JSF1.2 et Seam 2.2.0. Je donne les résultats suivants jolie config.xml:Seam et Prettyfaces

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

et le haricot Seam:

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

modèle de cartographie fonctionne très bien, mais je reçois toujours l'exception suivante:

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)

Qu'est-ce que je fais de mal? Merci

Répondre

2

Il semble que quelque chose empêche la restauration de Seam ConversationContext.

Si cela ne peut pas être résolu, vous pouvez probablement contourner cela en invoquant votre action sur une autre phase, RENDER_RESPONSE par exemple. Si c'est trop tard, alors je recommande d'utiliser une approche de style d'initialisation paresseux pour charger les informations de compte. (En utilisant un champ local et une vérification null dans la méthode getAccountInfo() par exemple.)

+0

Merci pour la réponse, Lincoln. Oui, vous avez raison, j'ai corrigé cela en changeant l'identifiant de phase en RENDER_RESPONSE. – mastanik