我的控制器:

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的列表,当选择城市时,理论上将从数据库中查询具有WEATHERcity_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

希望对您有帮助。

10-07 19:00
查看更多