[RichFaces] modification par un inplaceInput
Bonjour,
J'ai un soucis dont je ne vois pas l'origine... J'ai développé il y a un moment un système pour pouvoir modifier dans une table une annotation par le biais d'un InplaceInput. Ceci marchait très bien.
Depuis, de l'eau a coulé sous les ponts. J'ai notemment fait une maj de RichFaces en 3.3.1 et rien ne va plus :(.
Voici les bouts de code concerné.
Colonne du tableau concernée (l'élément est courrierItem) :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<rich:column id="mylettranetBoiteReceptionAnnotation" sortBy="#{courrierItem.courrier.annotation}">
<f:facet name="header">
<h:outputText value="#{msg.GLOBAL_libcourt_annotation}"/>
</f:facet>
<rich:inplaceInput value="#{courrierItem.courrier.annotation}" selectOnEdit="true" editEvent="onclick" layout="block" >
<a4j:support event="onviewactivated" reRender="tableCourrier" action="#{boiteReceptionHandler.annoter}" >
<f:setPropertyActionListener value="#{courrierItem}" target="#{boiteReceptionHandler.courrierLigne}" />
</a4j:support>
</rich:inplaceInput>
</rich:column> |
Dans mon controleur boiteReceptionHandler :
Code:
1 2 3 4 5 6 7 8
|
public void annoter() {
LOG.debug("annoter()");
LOG.debug("courrierLigne présent ? " + (courrierLigne != null));
LOG.debug("annotation : "+courrierLigne.getCourrier().getAnnotation());
new GestionCourrierProxy().annoterCourrier(courrierLigne.getCourrier());
LOG.debug("FIN annoter()");
} |
Fonctionnement : lorsqu'un utilisateur modifie l'inplaceInput, le courrier modifié est envoyé dans la variable courrierLigne du controleur et la méthode annoter est appellée.
Résultat : la variable est bien settée et la méthode appellée. Cependant, l'objet courrierLigne ne prend aucun compte des modifications apportées dans l'ihm via le InplaceInput. L'annotation reste null alors qu'il a été modifié dans mon navigateur...
Est-ce que quelqu'un verrait une solution à ce problème ?
validez l'action d'edtion
Je croix que tu n'as pas validé l'action de l'édition, tu as exécuté l'evènement "onviewactivated" qui a permet de setter le variable, mais pour "annotation" n'est pas setté car il n'ya pas un evènement qui lance l'affectation.
tu peut utiliser un autre <a4j:support> ou la methode de binding.
:)