注册页面上有三个不同的选择框 当我选择" 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;
}
答案 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)
以下是您尝试执行的操作示例,它使用上面提到的Struts2 Jquery插件。