我的控制员:
public String showWeather(Model model) {
model.addAttribute("weather", weatherService.listCities());
return "weather";
}
my weather.jsp
<select class="data">
<c:forEach items="${weather}" var="city">
<option>${city.name}</option>
</c:forEach>
</select>
如果每次从下拉菜单中突出显示/选择某些内容时,如何根据城市从数据库旁边显示新信息?
首先,我必须首先使用控制器将数据从数据库发送到我的JSP,或者可以将数据从数据库传输到JSP,同时我突出显示/选择列表中的项目(所以当我选择城市“A”时,然后查询将获得有关城市“A”的所有信息,我可以使用该信息)?
这是我的表格:
CITIES(id serial, name varchar(40))
WEATHER(id serial, city_id int, temp int, data date)
所以基本上我的下拉菜单中有CITIES
列表,当选择城市时,理论上将从数据库中查询WEATHER
city_id
。
如果无法进行实时更新,我该怎么办呢?
随意提问或提出建议。
答案 0 :(得分:1)
我认为你应该在这种情况下使用AJAX
在更改事件上使用JQUERY,将你的cityId发送到SpringMVC控制器,作为你的控制器应该返回的响应,然后用这个结果更新你的GUI组件:
然后主要区别在于您的控制器应该返回除视图之外的任何内容。您可以使用@ResponseBody
注释执行此操作:
例如,当您请求时,此控制器将返回温度字符串 它适用于id = 222的城市
/ getTemperature / 222
@RequestMapping(value="/getTemperature/{id}", method=RequestMethod.GET)
@ResponseBody
public String getTemparature(@PathVariable("id") Integer id){
String weather = someDaoObect.getTemperature(id);
return weather;
}
在这种情况下,代码的行为与您在HttpServletResponse
中写入结果的Servlet完全相同。
希望它会对你有所帮助。
答案 1 :(得分:1)
你在说什么才是Ajax关注的重点(参见Ajax Programming),在服务器和客户端(浏览器)之间传递数据,异步发送和检索数据。在您的情况下,当用户选择和项目时,应用程序必须去查询服务器需要做什么(更新数据库中的信息,将内容返回给浏览器等)。
在您的情况下,我不知道您是否可以包含新库并使用它,但是在Java中的Web项目中有很多可以使用的,并且很容易集成和使用它:
此外,您还可以包含一个漂亮的JavaScript库(例如:jQuery,Prototype,Ext,Dojo等),它们提供相同的功能,以便在浏览器和服务器之间异步发送和接收信息。