Я пытаюсь обновить раскрывающиеся списки, когда событие onChange вызывается изменением выбора другого раскрывающегося списка.
Я имею в виду 2 метода:
1.) Я пытался использовать асинхронные вызовы с использованием dojo, но в этом случае, хотя я смог вызвать действие асинхронно, но при выполнении действия оно не обновляет содержимое раскрывающихся списков. код, который обновит содержимое выпадающего списка.
Вот коды:
Страница JSP:
<%@taglib uri="/struts-tags" prefix="s" %>
<%@taglib uri="/struts-dojo-tags" prefix="sd" %>
<s:url id="scriptURL" action="getLists" />
<sd:a href="%{scriptURL}" listenTopics="getLists" formId="dayReport" showLoadingText="Working..."/>
<s:form action="viewDayReport" id="dayReport">
<s:select label="Customer " name="customer" headerKey="0" headerValue="Select" list="customerList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Contact " name="contact" headerKey="0" headerValue="Select" list="contactList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Employee " name="employee" headerKey="0" headerValue="Select" list="employeeList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Stage " name="stage" headerKey="0" headerValue="Select" list="stageList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Type " name="type" headerKey="0" headerValue="Select" list="typeList" onchange="dojo.event.topic.publish('getLists');"/>
<sd:datetimepicker label="Date" name="date" displayFormat="dd/MM/yyyy" onchange="dojo.event.topic.publish('getLists');"/>
<s:submit value="View Report(s)"/>
</s:form>
Акция:
The action sets all the 5 lists required in the <s:select> tags in the page.
The lists are getting generated properly, I have checked.
Конфигурация распорок:
<struts>
<!-- Add your configuration elements here -->
<package name="Deutek.admin" extends="struts-default" >
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="dayReportPage" class="admin.dayReportAction">
<result type="tiles">dayReport</result>
</action>
//This is the action mapping which maps the action in use.(Notice that the above action is also forwarding to the same page, it is the action which first time displays the page.)
<action name="getLists" class="admin.getLists">
<result type="tiles">dayReport</result>
</action>
</package>
</struts>
2.) Для второго метода, который я нашел путем поиска в Google, требуется следующий сценарий java на странице jsp
function retrieveURL(url)
{
if (window.XMLHttpRequest)
{
// Non-IE browsers
req = new XMLHttpRequest();
req.onreadystatechange = processStateChange;
try {
req.open("GET", url, true);
} catch (e) {
alert(e);
}
req.send(null);
} else if (window.ActiveXObject) { // IE
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processStateChange;
req.open("GET", url, true);
req.send();
}
}
}
Здесь «req.open» требует «url» в качестве параметра. Здесь я не понимаю, каким должен быть URL, чтобы вызывался класс действия, о котором я говорил в первом методе.
Скажите, пожалуйста, какой код мне не хватает в первом методе обновления выпадающих списков новыми списками, которые были установлены классом действия.
Кроме того, каким должен быть URL во втором методе.
И какой метод, на ваш взгляд, лучше.
Пожалуйста, помогите как можно скорее.
Спасибо !!