不调用操作
我觉得这很容易解决,但我很难过。 我一整天都在搜索,但我的代码似乎与工作示例相匹配。 我正在使用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
属性不知道从何处获取其数据。
也就是说:这个版本中的selectBox
function有点时髦; 当我删除该属性时,我在键入时看到数据,如果设置为true,我什么也得不到。
但是,我没有看到选择过滤,这意味着即使它正确地突出显示匹配的字符,也不会删除不匹配的条目; 我相信他们应该。
不相关,但为什么要费心从VO创建地图? 除非我有合理的理由(例如, CityVO
太大或包含敏感信息),只需使用listKey
和listValue
属性并使用服务已经返回的内容。