Как заполнить второй тэг2 выберите тег на основе значения, выбранного из первого тега выбора? - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу заполнить 3 выбора (Зона, Станция, Отдел) в стойках2.
В каждом раскрывающемся списке отображаются различные параметры в зависимости от значений, выбранных в предыдущем раскрывающемся списке:

  1. Первое поле - Зона.Пользователь выберет одну зону из выбора зоны.
  2. На основе этой выбранной зоны выбор станции будет заполнен из базы данных.Пользователь может выбрать несколько станций здесь.
  3. На основе этих выбранных станций теги выбора отделов будут заполняться из базы данных.Пользователи могут выбрать несколько отделов здесь.

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

Код JSP здесь:

<tr>
    <td style="background-color:#FFFFFF;" class="headingLabelStyle1" align="right">
        <s:label value="Zone" ></s:label></td>
    <td width="4%" align="center" class="headingLabelStyle1" style="background-color:#FFFFFF;">
        <s:label value=":" /> </td>
    <td style="background-color:#FFFFFF;">
        <s:select name="pmrkpr8800Bean.zone" list="zoneList" id="zone" 
            headerValue="-- Please Select --" headerKey="-1" 
            tabindex="1" cssClass="h1"></s:select>
    </td>
</tr>
<tr>
    <td style="background-color:#FFFFFF;" class="headingLabelStyle1" align="right">
        <s:label name="stncd"  value="Station Code" ></s:label></td>
    <td width="4%" align="center" class="headingLabelStyle1" style="background-color:#FFFFFF;">
        <s:label value=":" /> </td>
    <td style="background-color:#FFFFFF;">
        <s:select name="pmrkpr8800Bean.stnCde" list="stationList" id="stnCde" headerValue="-- Please Select --" headerKey="-2" tabindex="2" cssClass="h1" size="3" multiple="true"></s:select>
    </td>
</tr>
<tr>
    <td style="background-color:#FFFFFF;" class="headingLabelStyle1" align="right">
        <s:label value="Department" ></s:label></td>
    <td width="4%" align="center" class="headingLabelStyle1" style="background-color:#FFFFFF;">
        <s:label value=":" /> </td>
    <td style="background-color:#FFFFFF;">
        <s:select name="pmrkpr8800Bean.dept" list="deptList" id="dept" headerValue="-- Please Select --" headerKey="-1" tabindex="3" cssClass="h1" size="3" multiple="true"></s:select>
    </td>                  
</tr>

public String populateZoneSelect() {
    String result = SUCCESS;
    try {
        log.info("Inside populateZoneSelect");
        zoneList = ipmrkpr8800.getZoneList();
    } catch (Exception e) {
        result = ERROR;
        e.printStackTrace();
    }
    return result;
}

public String populateStationSelect() {
    String result = SUCCESS;
    String selZone = request.getParameter("selZone");
    System.out.println("Selected zone: " + selZone);

    try {
        stationList.put("CSMT", "CSMT-MUMBAI");
        stationList.put("NDL", "NDL-NEW DELHI");
        stationList.put("PNVL", "PNVL-PANVEL");
    } catch (IOException e) {
        e.printStackTrace();
    }
    /*try {
        log.info("Inside populateStationSelect");
        stationList = ipmrkpr8800.getStationList(selZone);
        System.out.println("StationList: " + stationList.size());
    } catch (Exception e) {
        result = ERROR;
        e.printStackTrace();
    }*/
    return result;
}

Последние два блока кода относятся к классу Action.populateZoneList работает нормально, и я могу отображать различные зоны из базы данных.Выбранное значение захватывается и отправляется в populateStationSelect ().если закомментированная часть в функции не закомментирована, переменная stationList Map содержит список кодов и названий станций.

Но после этого в jsp, в Station select tag отображается только заголовок «Пожалуйста, выберите».Коды станций и названия, полученные из базы данных, не отображаются.Я написал геттеры и сеттеры для этих переменных карты также в действии.

...