我的控制器:
public String showWeather(Model model) {
model.addAttribute("weather", weatherService.listCities());
return "weather";
}
我的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
。如果无法实时更新,我应该如何做呢?
随时提出问题或提出建议。
最佳答案
我认为您应该在这种情况下使用AJAX
在变更事件上使用JQUERY whick会将您的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;
}
在这种情况下,代码的行为与Servlet完全相同,在Servlet中,您将结果写入
HttpServletResponse
。希望对您有帮助。