我正在使用struts + spring + hibernate构建一个页面。我有一个jQuery选择小部件,它应该从数据库中加载一个值列表,但它没有填充。 这是这个帖子的延续:<sj:select> not calling action因为我正在慢慢缩小这个问题的原因。
这是我的代码:
struts.xml中
<action name="getListOfCities" class="cityActions">
<result type="json" name="SUCCESS">
<param name="root">cities</param>
</result>
</action>
page.jsp
(对于地图)
<s:url id="cityList" action="getListOfCities"/>
<sj:select name="select" href="%{cityList}" list="cities" headerKey="-1" emptyOption="true" headerValue="Pick one"/>
CityAction.java
public class CityActions extends ActionSupport implements ModelDriven<CityVO> {
public void setCityService(CityService cityService) {
this.cityService = cityService;
}
public CityVO getModel(){
System.out.println("Executing getModel()");
return city;
}
public String execute() {
System.out.println("Executing cities");
return "SUCCESS";
}
public String getJSON(){
return execute();
}
public String addCity(){
try{
cityService.addCity(city);
return "SUCCESS";}
catch(Exception e){
return "ERROR";
}catch(Throwable t){
return "ERROR";
}
}
public Map<String, String> getCities() {
List<CityVO> cityList = cityService.listCities();
Iterator<CityVO> iterator = cityList.iterator();
while (iterator.hasNext()) {
CityVO fac = iterator.next();
cities.put(fac.getCityName(), Integer.toString(fac.getCityId()));
}
System.out.println("Cities: " + cities);
return cities;
}
public List<CityVO> getCityList2(){
System.out.println("Getting list of cityVOs");
cityList2 = cityService.listCities();
return cityList2;
}
}
我的动作类支持将JSON对象作为VO或Map返回。当前的page.jsp代码用于地图功能。
我正在使用firebug试图解决问题。我可以看到我的JSON对象正确返回。它看起来像:
{"Foo":"3","Bar":"4","Hello":"2"}
我收到了一个错误,我知道它来自sj:select小部件;如果我删除它,错误就会消失。
a is undefined
f()jquery....min.js (line 2)
a = undefined
c = function()
d = undefined
Google让我相信这表明解析JSON值存在问题,但我找不到任何与struts2-jquery插件相关的示例。我已经尝试将dataType =“json”添加到我的sj:select但是这不能解决问题。
如果有人有任何建议,那将非常感激。我已经坚持了好几天了。
答案 0 :(得分:0)
你应该尝试这个动作:
<action name="getListOfCities" class="cityActions">
<result type="json"/>
</action>