Не удается найти способ передать скрытое значение в файл действия - PullRequest
0 голосов
/ 13 октября 2011

Ситуация:

У меня есть два автозаполнения додзё на jsp.Оба они запускают одно и то же действие при изменении их значения.Теперь я хочу, чтобы в файле действий я знал, какой автозаполнение было изменено.

Что я сделал:

Обычно в такой ситуации я бы назвал javascriptизменить значение скрытого поля, а затем получить доступ к значению этого скрытого поля в файле действия, чтобы узнать, что было изменено.Но я вызываю JavaScript с помощью атрибута «onChange», который (к сожалению) не работает для «автозаполнения».Мне пришлось использовать «valueNotifyTopics» для вызова действия.

Вот код:

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

Я надеялся использовать что-то вроде этого:

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

вместо

valueNotifyTopics="viewContactInfo"

Пожалуйста, посоветуйте способ обойти ситуацию, о которой я говорил.

Спасибо !!

В случае, если я пропустил любую необходимую информацию, пожалуйста, оставьтекомментарии.

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Похоже, вам не хватает атрибута имени для #chngd (будут представлены только поля с атрибутом имени)

0 голосов
/ 29 декабря 2011

Я понял это некоторое время назад, но выкладываю этот ответ сейчас, для тех, у кого все еще проблемы:

В jsp сделайте это:

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

Затем в JavaScript сделайтеthis:

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

Таким образом, когда значение автозаполнения dojo изменяется, вы можете установить значение скрытого поля перед вызовом вашего действия.В этом отношении вы можете сделать намного больше, потому что это похоже на то, что вы делаете это -> onclick="topic()".

Надеюсь, это поможет !!

...