Impossible de trouver un moyen de transmettre une valeur cachée au fichier d'action

Situation:

J'ai deux autocompleteurs Dojo sur un jsp. Les deux déclenchent la même action lorsque leur valeur est modifiée. Maintenant, je veux que dans le fichier d'action je devrais savoir quel autocompleter a été changé.

Ce que j'ai fait:

Normalement, dans une telle situation, j'appellerais un javascript pour modifier la valeur d'un champ caché, puis accéder à la valeur de ce champ caché dans le fichier d'action pour savoir qui a été changé. Mais j'appelle le javascript en utilisant l'attribut "onChange" qui (malheureusement) ne fonctionne pas pour "autocompleter". Je devais utiliser "valueNotifyTopics" pour appeler l'action.

Voici le code:

<s:url id="scriptURL" action="viewContactInfo" /> <sd:div href="%{scriptURL}" listenTopics="viewContactInfo" formId="contactInfo" showLoadingText="false" preload="false"> <s:form id="contactInfo"> <sd:autocompleter autoComplete="false" name="customer" list="customerList" valueNotifyTopics="viewContactInfo"/> <sd:autocompleter autoComplete="false" name="contact" list="contactList" valueNotifyTopics="viewContactInfo"/> <s:hidden id="chngd" value="initial"/> </s:form> </sd:div> 

J'espérais utiliser quelque chose comme ça:

 onchange="dojo.byId('chngd').value='some value'; dojo.event.topic.publish('viewContactInfo');" 

au lieu de

 valueNotifyTopics="viewContactInfo" 

Veuillez indiquer un moyen de contourner la situation que j'ai mentionnée.

Merci!!

Dans le cas où j'ai manqué les informations requises, laissez un commentaire.

On dirait que vous manquez le nom-attribut pour #chngd (seuls les champs avec un attribut name seront soumis)

J'avais compris cela depuis un moment, mais je publie cette réponse maintenant, pour tous ceux qui ont encore des problèmes:

Dans jsp, procédez comme suit:

 <sd:autocompleter autoComplete="false" name="customer" list="customerList" valueNotifyTopics="topic"/> 

Ensuite, en javascript, procédez comme suit:

 dojo.event.topic.subscribe("topic", function(){ dojo.byId('chngd').value='some value'; dojo.event.topic.publish('getLists'); }); 

De cette façon, lorsque la valeur d'un automate dojo est modifiée, vous pouvez définir la valeur d'un champ caché avant que votre action ne soit appelée. D'ailleurs, vous pouvez faire beaucoup plus, car c'est comme ça, vous faites cela -> onclick="topic()" .

J'espère que cela t'aides!!