Spring Hibernate,从下拉菜单中选择时更新JSP视图

时间:2011-09-17 13:58:54

标签: java hibernate spring jsp html-select

我的控制员:

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

如果无法进行实时更新,我该怎么办呢?

随意提问或提出建议。

2 个答案:

答案 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等),它们提供相同的功能,以便在浏览器和服务器之间异步发送和接收信息。