不调用操作

我觉得这很容易解决,但我很难过。 我一整天都在搜索,但我的代码似乎与工作示例相匹配。 我正在使用Struts + SpringMVC + Hibernate,我正在用jQuery标签替换所有的dojo标签。 jQuery下拉列表没有调用相关的操作。

这是相关的代码:

在struts.xml

  cities   

Page.jsp

   

CityAction.java

 public class CityActions implements ModelDriven { CityService cityService; private Map cities = new HashMap(); CityVO city = new CityVO(); public void setCityService(CityService cityService) { this.cityService = cityService; } public CityVO getModel(){ return city; } public String execute() { return Action.SUCCESS; } public String addCity(){ try{ cityService.addCity(city); return "SUCCESS";} catch(Exception e){ return "ERROR"; }catch(Throwable t){ return "ERROR"; } } public Map getCities() { List cityList = cityService.listCities(); Iterator iterator = cityList.iterator(); while (iterator.hasNext()) { CityVO fac = iterator.next(); cities.put(fac.getCityName(), Integer.toString(fac.getCityId())); } return cities; } 

下拉菜单显示但未填充。 这是我以前工作得很好的:

   

有人有解决方案吗? 我已经确定要添加

  

和头内:

  

谢谢。

(评论太长了。拼凑出与你的片段类似的部分版本。)

主要问题是您的结果将root设置为cities ,这意味着返回的JSON没有cities键,因此自动完成的list属性不知道从何处获取其数据。

也就是说:这个版本中的selectBoxfunction有点时髦; 当我删除该属性时,我在键入时看到数据,如果设置为true,我什么也得不到。

但是,我没有看到选择过滤,这意味着即使它正确地突出显示匹配的字符,也不会删除不匹配的条目; 我相信他们应该。

不相关,但为什么要费心从VO创建地图? 除非我有合理的理由(例如, CityVO太大或包含敏感信息),只需使用listKeylistValue属性并使用服务已经返回的内容。