Spring mvc формирует пост на другом контроллере или задумывается над этим - PullRequest
3 голосов
/ 09 ноября 2011

Я сделал этот путь более запутанным, чем нужно.Вот упрощенная версия.

1 - у меня есть выпадающий список и кнопка отправки на каждой странице в верхнем правом углу.Выпадающий список языков.Пользователь может изменить язык и нажать кнопку отправки, чтобы перейти к контроллеру языка и обновить текущий язык.

    public class LanguageController {

     @ModelAttribute("languageList")
       public LanguageList populateLanguageList() {
             return LanguageDAO.all();
       }

        @RequestMapping("/setLanguage.mvc")
        public ModelAndView setLanguage(
            @ModelAttribute("languageForm") LanguageForm languageForm,
                HttpServletRequest request, 
                HttpServletResponse response
                ){
            //do stuff
        }
    }


<form:form modelAttribute="languageForm">
    <form:select path="acctGrpId" >
        <form:options items="${languageList}"/>
    </form:select>
        <input type="submit"/>
</form:form>

Как сделать это доступным на каждой странице?Учитывая, что страница может быть страницей, на которой вы редактируете / создаете пользователя, поэтому «Контроллер» этой страницы на самом деле является UserController, или RoleController, или DepartmentController, а не LanguageController.Мне нужен этот конкретный jsp, чтобы поразить определенный контроллер независимо от того, что делает страница.

Ответы [ 4 ]

3 голосов
/ 09 ноября 2011

Вы просто указываете разные атрибуты действий в разных формах. Нет проблем с наличием нескольких форм на одной странице.

В вашем случае это будет:

<form action="Context/adduser.mvc">
</form>

и

<form action="Context/addBookmark.mvc">
</form>

и т.д.

0 голосов
/ 10 ноября 2011

Это то, что вы ищете?

Каковы лучшие рекомендации по настройке глобальных атрибутов модели в Spring MVC?

реализует HandlerInterceptor,и выставлять данные на каждый запрос

0 голосов
/ 09 ноября 2011

Ваш JSP - это представление, отдельное от вашего контроллера. В этом прелесть MVC, разделения модели, вида и контроллера. Вы не должны обязательно думать о представлении как о привязанном к контроллеру, или о странице как имеющей «текущий» контроллер. Да, мы часто делаем эту связь довольно сильной, потому что контроллер обрабатывает заполнение атрибутов модели для визуализации представления и обработки публикации формы в результате действия в представлении, но на самом деле любой контроллер может возвращать любое представление, если он заполняет модель правильно, и любой вид можно представить на любой контроллер. Представление может даже отправляться на разные контроллеры в разное время в зависимости от следующего URL.

Итак, в вашем случае, как говорит soulcheck, вы просто меняете URL-адрес, который отправляет форма. Поскольку контроллеры отображаются с помощью @RequestMapping, изменение действия формы изменит класс контроллера и / или метод, который вызывается при отправке формы, пока Spring MVC может найти подходящий RequestMapping.

0 голосов
/ 09 ноября 2011

Я хотел бы помочь вам в этом, но я не уверен в ваших требованиях.

Вы говорите о том, что BookMarkController имеет различные методы и добавляет / загружает вызов методов?

или вы хотите, чтобы BookMarkController имел более одной формы?

Не могли бы вы подробнее рассказать об этом?

Полагаю, вы хотите, чтобы все страницы jsp отправляли данные на контроллер, который может сохранять форму при нажатии на ссылку. Это довольно просто, вы можете добавить метод savePage во все контроллеры и соответствующим образом отобразить uri, а из метода savePage вы можете перенаправить запрос на конкретный контроллер, который вы написали для сохранения страниц.

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

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