3 раскрывающихся зависимости с использованием Struts и Hibernate (страна, штат, город) - PullRequest
1 голос
/ 23 марта 2011

У меня есть комбинированный список. Страна, штат и город. Мне нужно изменить список в соответствии с предыдущим списком, как если бы я изменил страну, мне нужно получить соответствующий список состояний этой страны, а также, если я выбрал штат, то соответствующие города этого штата. Может кто-нибудь, пожалуйста, помогите мне найти ответ на этот вопрос. Спасибо

public String getStateNCityList() {
    logger.info("Enter getStateNCityList");
    try {
        AddressUtils addrUtil = new AddressUtils();
        this.stateList = addrUtil.getStateList(this.getCountryId());
        this.cityList = addrUtil.getCityList(this.getStateList().get(0).getAddressComboId());
        this.session.put("stateList", this.stateList);
        this.session.put("cityList", this.cityList);
        System.out.println("state list size "+this.stateList.size());
        System.out.println("city list size "+this.cityList.size());
    } catch(Exception e) {
        logger.error(e,e);
        return ERROR;
    }
    logger.info("Exit getStateNCityList");
    return SUCCESS;
}

// addressUtils.java

public List<AddressComboDetails> getCountryList(){
    List<AddressComboDetails> countryList = new ArrayList<AddressComboDetails>();
    try{
    String query=" addressComboTypeId="+ApplicationConstants.COMBO_COUNTRY;
    countryList=addressDao.getAddressComboDetailsByWhereClause(query);
    System.out.println("countryList size" +countryList.size());
    } catch(Exception e) {
        logger.error("Exception in getCountryList" );
        logger.error(e,e);
    }
    return countryList;
}

// hibernate java класс

public List<AddressComboDetails> getAddressComboDetailsByWhereClause(
        String whereClause) {
    logger.info("entered getAddresscomboDetailsByWhereClause ");
    List<AddressComboDetails> addressComboList = new ArrayList<AddressComboDetails>();
    Session session = null;

    try {
        session = HibernateUtil.getSession();
        Transaction tx = session.beginTransaction();
        String query = " from AddressComboDetails  where " + whereClause;
        System.out.println("Query is "+query);
        addressComboList = (List<AddressComboDetails>) session.createQuery(query).list();
        tx.commit();

    } catch (HibernateException e) {
        logger.error("error in getAddresscomboDetailsByWhereClause"+ e.getMessage());
        logger.error(e,e);
    } finally {
        session.close();
    }
    return addressComboList;
}

// код моей страницы jsp

<tr>
                <td class="generalText"><s:text name="country" /></td>
                <td><s:select listValue="addressComboValue" listKey="addressComboId" list="#session.countryList" onchange="dojo.event.topic.publish('address_country_details');return false;"
                    name="corpAddress.country.addressComboId" />
                    <s:set name="countryId" value="%{corpAddress.country.addressComboId}" /></td>
                    <td><s:url id="corp_country" action="getStateNCityList.action" >
                    <s:param name="countryId" value="%{11}"></s:param></s:url>
                     <sx:div id="country" cssStyle="display:none;" href="%{corp_country}" listenTopics="address_country_details" formId="supplierDetails" showLoadingText=""></sx:div>
            </tr>

1 Ответ

0 голосов
/ 23 марта 2011

Добавьте прослушиватель событий «change» JavaScript к комбинированному списку стран, который будет использовать AJAX для загрузки списка состояний выбранной страны и изменения параметров комбинированного списка состояний.Сделайте то же самое для комбинации состояний, чтобы загрузить города.

Вызов AJAX может вызвать действие Struts, возвращающее список параметров HTML или массив состояний / городов JSON.Действие Struts должно использовать запрос Hibernate для поиска состояний страны (или городов штата) в базе данных.

...