Spring + JSP URL создание лучших практик - PullRequest
14 голосов
/ 27 марта 2010

Интересно, есть ли хорошие практики для адресации 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. Если вы знакомы с Rails / Grails, то теперь вы знаете, как решить эту проблему:

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

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

Ответы [ 2 ]

10 голосов
/ 31 марта 2010

Надеюсь, я понял ваш вопрос. Я думаю, что вы спрашиваете о том, как сохранить 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}" />
0 голосов
/ 31 марта 2010

Попробуйте использовать 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

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