Considérons ce code simple:Ne peut pas définir un événement et lier un <a4j: support /> sur cet événement en même temps
<h:form id="myForm">
<h:inputText id="myInput">
<a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
</h:form>
cela va générer le code HTML suivant:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="A4J.AJAX.Submit(...)" />
maintenant, je viens d'ajouter quelque chose dans le cas de mon onchange
<h:inputText>
:
<h:form id="myForm">
<h:inputText id="myInput" onchange="alert('foobar');">
<a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
</h:form>
Cela GENERAT e le code HTML suivant:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar');" />
Comme vous pouvez le voir, le code Ajax est pas ajouté plus. C'est un comportement vraiment étrange en ce qui me concerne. Pourquoi le <a4j:support>
ne joint pas l'appel Ajax si l'événement est déjà défini dans le champ de saisie?
Donc, ma question est comment faire le <a4j:support>
de travail sur un event
qui est déjà défini dans le input
? Bien sûr, la solution doit exécuter à la fois le code Javascript défini en onchange
et l'appel Ajax.
En d'autres termes, je voudrais avoir le code HTML suivant:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar'); A4J.AJAX.Submit(...)" />
J'utilise RichFaces 3.3.2 et JSF 1,2
EDIT
Bien sûr, je peux déplacer le onchange
Javascript code dans l'attribut onsubmit
du <a4j:support>
, faire quelque chose comme ça:
<h:inputText id="myInput">
<a4j:support onsubmit="alert('foobar');" event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
Mais est-ce la seule façon ??
J'ai créé un fil sur le forum RichFaces, au moins pour comprendre si ce comportement est le comportement attendu de l'équipe RF ... – romaintaz