URL Spring+JSP, создающий лучшие практики

Интересно, существуют ли какие-либо хорошие методы для обращения к контроллерам Spring в JSP.

Предположим, что у меня есть контроллер:

@Controller
class FooController {

  // Don't bother about semantic of this query right now
  @RequestMapping("/search/{applicationId}")
  public String handleSearch(@PathVariable String applicationId) {
    [...]
  }
}

Конечно, в JSP я могу записать:

<c:url value="/search/${application.id}" />

Но очень трудно изменить URL затем. Если Вы знакомый с направляющими/Grails затем Вы теперь, как эта разрешенная проблема:

redirect_to(:controller => 'foo', :action = 'search')

Но в Spring существует так много UrlMappers. Каждый UrlMapper имеет собственную семантическую и обязательную схему. Направляющие, подобные, схема просто не работает (если Вы не реализуете ее сами). И мой вопрос: есть ли еще удобные способы обратиться к контроллеру от JSP в Spring?

14
задан skaffman 27 March 2010 в 13:13
поделиться

2 ответа

Надеюсь, я понял ваш вопрос. Я думаю, вы спрашиваете, как поддерживать URL-адреса, когда строки URL-адресов находятся в сопоставлениях jsp и контроллера.

Ваш Контроллер должен выполнять логику, ваш JSP должен выполнять вывод. Создание URL-адреса должно быть ответственностью контроллера, обрабатывающего его. Итак,

class SearchController {

  @RequestMapping("/search/{applicationId}")
  public String handleSearch(@PathVariable String applicationId) {
    [...]
  }

  public String getUrl(Long applicationId) {
      return "/search/" + applicationId;
  }
}

class StartController {
   private SearchController controller;

   @ModelAttribute("searchUrl")
   public String getSearchUrl() {
       return fooController.getUrl(applicationId);
   }
}

и в вашем start.jsp сделайте

 <c:url value="${searchUrl}" />
10
ответ дан 1 December 2019 в 15:12
поделиться

Попробуйте использовать Apache в качестве интерфейса для переназначения URL-адресов:

http://www.simonecarletti.com/blog/2009/01/apache-rewriterule-and-query-string/

Таким образом, вы может изменить параметр applicationId из строки запроса на удобный URL.

Кроме того, вот документация для mod_rewrite: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

0
ответ дан 1 December 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: