【发布时间】:2012-07-05 23:16:15
【问题描述】:
我觉得这是一个非常容易解决的问题,但我很难过。我整天都在寻找,但我的代码似乎与工作示例的代码相匹配。 我正在使用 Struts+SpringMVC+Hibernate,并且正在用 jQuery 标记替换我所有的 dojo 标记。 jQuery 下拉菜单未调用相关操作。
以下是相关代码:
Struts.xml
<action name="getListOfCities" class="cityActions">
<result type="json">
<param name="root">cities</param>
</result>
</action>
Page.jsp
<s:url id="cityList" action="getListOfCities"/>
<sj:autocompleter name="cities" href="%{cityList}" list="cities" selectBox="true"/>
CityAction.java
public class CityActions implements ModelDriven<CityVO> {
CityService cityService;
private Map<String, String> cities = new HashMap<String, String>();
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<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()));
}
return cities;
}
下拉菜单显示但未填充。这是我之前的工作正常:
<s:url id="cityList" action="getListOfCities" />
<sx:autocompleter href="%{cityList}" name="cities" keyValue="0" value="---- SELECT ONE-----"/>
有没有人可以解决这个问题?我确定要添加
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
和里面的脑袋:
<sj:head jqueryui="true"/>
谢谢。
【问题讨论】:
-
嗨,我刚刚阅读了两个 href 的 api,它们有不同的含义。检查一下:sj(code.google.com/p/struts2-jquery/wiki/AutocompleterTag),sx(struts.apache.org/2.0.12/docs/autocompleter.html)。所以我认为你应该在需要之前填充你的收藏..
-
我不明白,这个例子和我一样。问题不在于未填充下拉列表的操作;问题是根本没有调用该操作。我将 system.out.println 语句放在动作类的所有方法中,但我什么也没看到。
-
什么版本的 S2? (我还是很困惑,你是认真地在同一个项目中使用了两个完全不同的 MVC 框架吗?) JavaScript 控制台中有什么东西吗?服务器日志?
-
我正在使用 struts 2.3.3 和 struts-jquery-plugin 3.3.1。据我了解,使用 Spring 和 Struts 是相当普遍的,尽管我当然对它们了解得不够多,无法评论集成它们是否是一个好主意。我已经深入到这个项目中,尽管现在删除任何一个都为时已晚。我已经安装了 firebug 来帮助我解决这个问题,但它没有显示来自 sj:select 的任何 JSON 输出。控制台也没有从操作类中获取任何 System.out.println 语句。
-
使用 Spring 和 Struts,是的;使用 Spring MVC 和 Struts,不。我建议创建一个最小的失败示例项目(即,重现 jquery 失败所需的一切,而不是您的应用程序的域)并将其放在 github 上。跟进评论(请使用@davenewton,否则我不会收到通知),我会看看;我还不能重现这个问题。
标签: jquery drop-down-menu struts2