从数据库中获取值到选择框

时间:2011-12-10 11:27:22

标签: hibernate struts2

注册页面上有三个不同的选择框 当我选择" India"从第一个选择框然后来自" India"应该从第二个选择框中的表中获取,如果选择任何状态,则应该从第三个选择框中的表中获取该特定状态的城市。

我们正在使用Struts2和Hibernate

public String execute() throws Exception {
    if(externalUser.getPerson().getAddress().getCity().getState()
                   .getCountry().getId() + "" != null) {
        degreeList = degreeDao.findAll();
        setCountryList((List<Country>) countryDao.findAll());
        setStateList((List<State>)stateDao.findAll("country_ID", externalUser.getPerson().getAddress().getCity().getState().getCountry().getId()));
        setCityList((List<City>)stateDao.findAll("state_ID",externalUser.getPerson().getAddress().getCity().getState().getId()));
    } else {
        degreeList = degreeDao.findAll();
        setCountryList((List<Country>) countryDao.findAll());
    }

    return SUCCESS;
  }

3 个答案:

答案 0 :(得分:1)

不是答案;代码清理。

考虑编写此方法更类似于以下代码段。

Demeter仍然有点miffed,但代码的其余部分更容易思考。

public String execute() throws Exception {
    setDegreeList(degreeDao.findAll());
    setCountryList(countryDao.findAll());

    State state = externalUser.getPerson().getAddress().getCity().getState();
    if (state.getCountry().getId() != null) {
        setStateList(stateDao.findStatesForCountry(state.getCountry().getId()));
        setCityList(stateDao.findCitiesForState(state.getId()));
    }

    return SUCCESS;
}

答案 1 :(得分:0)

使用一些Ajax调用。当第一个选择的值从下拉列表发送到Action时,根据国家/地区获取状态。 发送结果为JSON数据解析它在您的jsp端填充组合框。重复区域的相同周期。

使用具有此类选择框的Struts2-Jquery插件的一种简单方法。有一个供您参考

Struts2-Jquery Plugin Select tag

我更喜欢使用普通的Jquery,并使用JSON插件为我的动作类发送结果为JSON struts2,并使用Jquery自行解析数据,这将为我提供更多的灵活性和控制。

永远不建议使用这种深层链接方法,不仅会妨碍程序的可读性,还会使后期难以维护。

答案 2 :(得分:0)