Spring исключая страницы из набора правил urlrewrite, установленного для root - PullRequest
0 голосов
/ 22 июля 2010

Вот простое объяснение проблемы:

У меня есть контроллер RedirectController, так что я хочу обрабатывать все как http://mydomain/**

Однако, все же я хочу, чтобы перенаправить http://mydomain/ для контроллера индекса (или index.jspx и т. Д.), И, скорее всего, в будущем мне нужно исключить / help / about URLs.

Текущий метод заключается в том, что я не изменил созданный Spring Roo urlrewrite.xml,Вот.Код:

<urlrewrite default-match-type="wildcard">
 <rule>
  <from>/resources/**</from>
  <to last="true">/resources/$1</to>
 </rule>
 <rule>
  <from>/static/WEB-INF/**</from>
  <set type="status">403</set>
  <to last="true">/static/WEB-INF/$1</to>
 </rule>
 <rule>
  <from>/static/**</from>
  <to last="true">/$1</to>
 </rule>
 <rule>
  <from>/</from>
  <to last="true">/app/index</to>  
 </rule>
 <rule>
  <from>/app/**</from>
  <to last="true">/app/$1</to>
 </rule>
 <rule>
  <from>/**</from>
  <to>/app/$1</to>
 </rule>
 <outbound-rule>
  <from>/app/**</from>
  <to>/$1</to>
 </outbound-rule> 
</urlrewrite>

Затем я использовал сопоставления аннотаций в моем RedirectControlller.

@RequestMapping("/**")
@Controller
public class RedirectController {
....


    @RequestMapping(method = RequestMethod.GET, value = "/{value}")
    public String get(@PathVariable String value, ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) {
          ...

Так что, когда запрашивается http://mydomain/xxx, это get () метод будет использовать значение ххх.Однако, когда я использую такую ​​схему, по запросу http://mydomain/ индекс передается как {значение} (например, ххх).(что-то, что я не хочу.)

В соответствии с правилами отображения в xml-файле выше, любой запрос / ** перенаправляется в DispatcherServlet в файле web.xml, чтобы обработчик отображения на основе аннотаций смотрел нааннотация RedirectController и просто включает в себя все URL, которые мы хотим исключить ...

Есть идеи для решения этой проблемы?

1 Ответ

1 голос
/ 23 июля 2010

В вашем urlrewrite.xml у вас будет что-то вроде

<rule>
     <from>^/location/([A-Z]+)/name/([A-Z]+)</from>
     <to>/login?name=$2&location=$1</to>
</rule>
...