2010-02-18 3 views
2

Я использую Java с Spring framework. Учитывая следующий URL:Spring URL mapping question

www.mydomain.com/contentitem/234 

Мне нужно сопоставить все запросы, которые приходят к /contentitem/{numeric value} отображенных к данному контроллеру с «числовым значением» передается в качестве параметра в контроллер.

Сейчас в моем контейнере сервлетов XML У меня есть простые отображения, подобные следующим:

... 
<entry key="/index.html"> 
    <ref bean="homeController" /> 
</entry> 
... 

Я просто интересно, что мне нужно, чтобы добавить к отображению для того, чтобы достичь того, что я описал?

Edit: Я непринятый ответ временно, потому что я не могу показаться, чтобы выяснить, как сделать отображение в моей web.xml (я использую аннотации, как описано в ответ axtavt в поле ниже). Как добавить правильный <url-pattern>..</url-pattern> в мой <servlet-mapping>, чтобы запрос «/ contentitem/{numeric_value}» был правильно поднят? Благодаря!

ответ

4

Это может быть сделано с помощью аннотаций на основе конфигурации контроллера (см 15.3 Implementing Controllers):

@Controller 
public class ContentItemController { 

    @RequestMapping("/contentitem/{id}") 
    public ModelAndView contentItem(@PathVariable("id") int id) { 
     ... 
    } 
} 
+0

Thanks..but мой проект в настоящее время устанавливается без аннотации. В любом случае я мог бы получить решение без использования аннотаций? – oym

+2

Нет. Нет способов настроить извлечения переменных пути без аннотаций. – axtavt

+0

действительно ?? вау, это удивительно для меня ... ладно спасибо за помощь! – oym

0

Вы должны импортировать org.springframework.stereotype.Controller.

1

пытаются использовать @RequestMapping и @PathVariable

@RequestMapping(value="/contentitem/{value}", method=RequestMethod.GET) 
public String demo(@PathVariable(value="nvalue") String name, ModelMap map) { 

int intValue = Integer.parseInt(nvalue); 

// Do manipulation 

return "something"; // Forward to something.jsp 
} 

Смотреть это Spring MVC Framework Tutorial