2009-08-05 10 views
0

POSITION INITIALE:comment désactiver l'exécution d'action sur demande ajax

Nous utilisons SEAM avec richfaces.

Nous avons la configuration de la page suivante avec une action (appelée actionBean.doBefore), qui devrait être exécutée une fois à la page charge:

<page> 
    <action execute="#{actionBean.doBefore}"/> 
    <navigation from-action="#{actionBean.doAfter}"> 
    <redirect view-id="/view/component/test.xhtml" /> 
    </navigation> 
</page> 

PROBLÈME

L'action est même exécuté lorsque nous validons un champ par ajax:

<h:inputText value="#{formBean.price}" id="price" required="true"> 
    <a4j:support event="onblur" reRender="price" ajaxSingle="true" bypassUpdates="true" /> 
</h:inputText> 

ou utilisez une boîte à suggestions (même lorsque vous tapez):

<rich:suggestionbox id="suggestionBoxId" for="city" suggestionAction="#{suggest.autocomplete}" var="result" minChars="3" nothingLabel="No capitals found" ajaxSingle="true" bypassUpdates="true" selfRendered="true" > 
    <h:column> 
    <h:outputText value="#{result.cityName}" /> 
    </h:column> 
</rich:suggestionbox> 

Merci à l'avance Raffi

Répondre

1

Pour autant que je sais que vous ne pouvez pas. L'action sera toujours appelée.

Au lieu d'utiliser une action de page pourquoi ne pas la portée de votre backing bean à PAGE ou CONVERSATION puis effectuer l'action d'une méthode annotée avec @Create? Cela vous donnera le même effet que l'action de la page mais ne sera appelée que la première fois que le Bean est instancié.

1

merci beaucoup. serait une autre approche. l'attribut suivant sur la balise d'action semble résoudre mon problème. heureusement sans effets secondaires:

<action execute="#{actionBean.doBefore}" on-postback="false"/> 
Questions connexes