Spring Hibernate, обновляет представление JSP при выборе из выпадающего меню - PullRequest
0 голосов
/ 17 сентября 2011

мой контроллер:

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>

Как я могу сделать так, чтобы каждый раз, когда я выделял / выбирал что-то из выпадающего меню, новая информация отображалась бы затемк нему из базы данных в соответствии с City ?

Прежде всего, я должен сначала отправить все данные из базы данных в мой JSP с контроллером или же данные могут быть переданы из базы данных в JSP между темЯ выделяю / выбираю элементы в списке (поэтому, когда я выбираю город «А», тогда запрос получит всю информацию о городе «А», и я смогу использовать эту информацию)?

вот мои таблицы:

CITIES(id serial, name varchar(40))
WEATHER(id serial, city_id int, temp int, data date)

Таким образом, в основном у меня есть список CITIES в моем выпадающем меню, и когда выбран город, то WEATHER с этим city_id будет запрашиваться из базы данных в теории.

Если обновление в реальном времени невозможно, как мне это сделать в противном случае?

Не стесняйтесь задавать вопросы или давать предложения.

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

То, о чем вы говорите, это именно то, на чем сфокусирован Ajax (см. Программирование Ajax ), передавая данные между сервером и клиентом (браузером), отправляя и получая данные асинхронно.В вашем случае, когда пользователь выбирает и указывает элемент, приложение должно пойти и запросить на сервере, что необходимо для этого (обновить информацию в БД, вернуть что-то в браузер и т. Д.).

В вашем случаеЯ не знаю, можете ли вы включить новую библиотеку и использовать ее, но в веб-проекте на Java их так много, и их так легко интегрировать и использовать:

Также вы можете включить одну из прекрасных библиотек JavaScript(например: jQuery, Prototype, Ext, Dojo и т. д.), который обеспечивает те же функции для асинхронной отправки и получения информации между браузером и сервером.

1 голос
/ 17 сентября 2011

Я думаю, что вам следует использовать AJAX в этом случае

использовать JQUERY при изменении события whick отправит ваш cityId контроллеру SpringMVC в качестве ответа, который ваш контроллер должен вернуть, и затем обновит компонент GUI с таким результатом:

тогда основное отличие состоит в том, что ваш контроллер должен возвращать все что угодно, кроме представления.Вы можете сделать это, используя @ResponseBody аннотацию:

, например, этот контроллер вернет вам температуру в виде строки, когда вы запросите ее для города с id = 222

/ getTempera.ru / 222

@RequestMapping(value="/getTemperature/{id}", method=RequestMethod.GET)
    @ResponseBody
    public String getTemparature(@PathVariable("id") Integer id){
        String weather = someDaoObect.getTemperature(id);
                return weather;
    }

в этом случае этот код ведет себя точно так же, как сервлет, где вы записываете свой результат в HttpServletResponse.

Надеюсь, он вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...