Определение выпадающего набора из 5 было изменено (в классе действий) - PullRequest
0 голосов
/ 14 сентября 2011

У меня проблемы с определением (хотя я знаю, что это не сложно).

У меня 5 выпадающих страниц на странице jsp. Событие onChange каждого выпадающего меню вызывает одно и то же действие.В файле действий я хочу узнать, какой из 5 выпадающих списков был изменен (что вызвало событие onChange).

Я знаю, что это может быть чертовски просто, но я не могу это сделать.Пожалуйста, совет.

Это jsp, содержащий выпадающие списки:

<s:form action="viewDayReport" id="dayReport">
        <s:select label="Customer " name="customer" headerKey="0" headerValue="Select" list="customerList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
        <s:select label="Contact "  name="contact"  headerKey="0" headerValue="Select" list="contactList"  onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
        <s:select label="Employee " name="employee" headerKey="0" headerValue="Select" list="employeeList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
        <s:select label="Stage "    name="stage"    headerKey="0" headerValue="Select" list="stageList"    onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
        <s:select label="Type "     name="type"     headerKey="0" headerValue="Select" list="typeList"     onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
        <sd:datetimepicker label="Date" name="date" displayFormat="dd/MM/yyyy"/>
        <%--<s:reset value="Reset"/>--%>
        <%--<s:submit value="View Report(s)"/>--%>
    </s:form>

В случае, если я пропустил любую информацию, пожалуйста, сообщите.

Спасибо

Kanishk

Редактировать:

Это текущая форма, содержащая 5 выпадающих списков

<s:form action="viewDayReport" id="dayReport">
        <s:select label="Customer " name="customer" headerKey="0" headerValue="Select" list="customerList" onchange="dojo.event.topic.publish('getLists');dojo.query('which').attr('value','customer');"/>
        <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"/>
        <s:hidden id="which"/>
        <%--<s:reset value="Reset"/>--%>
        <%--<s:submit value="View Report(s)"/>--%>
    </s:form>

В файле действий (я сокращаю длинный код и показываю, чторелевантно):

public class getLists extends ActionSupport {


private String which;
public String getWhich() {
    return which;
}

public void setWhich(String which) {
    this.which = which;
}

private String customer;
public String getCustomer() {
    return customer;
}

public void setCustomer(String customer) {
    this.customer = customer;
}
//other variables and functions
@Override
public String execute(){

    System.out.println("getlists:"+which);
    System.out.println("getlists:"+customer);

    //other function calls

    return "success";
}

}

Переменная customer печатается нормально, а переменная - нет.


В обработке тем все, что я сделал, это называется действием.Это код:

<s:url id="scriptURL" action="getLists" />
<sd:div href="%{scriptURL}" listenTopics="getLists" formId="dayReport" showLoadingText="false" preload="false"></sd:div>

Аналогично для 2-й темы.

В том, что вы сказали, не могли бы вы объяснить, что делает следующий код:

dojo.query('#which').attr('value', s);

А как мне получить доступ к "значению" в файле действий?

1 Ответ

2 голосов
/ 14 сентября 2011

Без кода обработки тем сложнее сказать, но есть два возможных решения:

1) Сохраните значения каждого поля в сеансе и сравните, чтобы увидеть, какие изменились

2) Установить скрытое поле в функции «обертка» onchange (см. Ниже)

<s:select name="customer" ... onchange="fire('customer')">
...
function fire(s) {
    $('#which').val(s);
    dojo.event.topic.publish('getLists');
    dojo.event.topic.publish('getDayReports');
}
...