2013-06-26 4 views
0

Я пытаюсь отобразить URL-адрес с контроллером Spring. Я хочу переменную petitionId в конце моего URL, например, я хочу, чтобы карта:Request Mapping pattern в конце URL */

.../product/all/petitionId/{petitionId} 

, а также

.../product/productId/{productId}/clientId/{clientId}/petitionId/{petitionId} 

Чтобы сделать это, я попытался иметь RequestMapping в заголовок контроллера, как этот

@Controller 
@RequestMapping(value = "product/*/petitionId/{petitionId}") 
public class ProductController 

и в объявлении метода я хочу карту

@RequestMapping(value = "*/all/*", method = RequestMethod.GET) 
public @ResponseBody 
String getProducts(@PathVariable Long petitionId) 

Я также пробовал с и без косых черт с одним, двумя и без звездочек ... с таким же результатом ошибки 404. Запрос Я хочу сделать

http://192.168.1.27:9999/middleware/product/all/petitionId/20 

Я знаю, что может иметь полное отображение URL в каждом методе, но это не самый изящный способ сделать это. Кто-нибудь знает, как это решить?

ответ

0

Если честно, ваши URL-адреса выглядят несколько сложными.

Вы рассмотрели другие схемы URL-адресов, например. для всех продуктов по ходатайству:

GET http://192.168.1.27:9999/middleware/petitions/20/products 

или продукта по идентификатору, идентификатором клиента и петиций ID:

GET http://192.168.1.27:9999/middleware/products?clientId=10&productId=10&petitionId=20 

?

1

Использование аннотации @RequestMapping по функциям. Вы можете использовать его в классе, но только для записи меньше в запросе каждой функции. Поместите в класс только то, что у вас есть общее во всех функциях вашего контроллера.

Например:

@Controller 
@RequestMapping(value = "/products") 
public class ProductController { 
    ... 

    @RequestMapping(value = "", method = RequestMethod.GET) 
    public @ResponseBody 
    String getProducts() { ... } 

    @RequestMapping(value = "/{productId}", method = RequestMethod.GET) 
    public @ResponseBody 
    String getProductsById(@PathVariable Long productId) { ... } 

    @RequestMapping(value = "/{productId}/clients/{clientId}/petitions/{petitionId}", method = RequestMethod.GET) 
    public @ResponseBody 
    String getPetition(@PathVariable Long productId, @PathVariable Long clientId, @PathVariable Long petitionId) { ... } 
} 

Вы в конечном итоге со следующими отображениями:

/products 
/products/{productId} 
/products/{productId}/clients/{clientId}/petitions/{petitionId}