2011-10-26 3 views
0

У меня есть весна @RequestMapping с парой @PathVariable s, и первая из них необходима, чтобы сузить ее до второго - вы можете увидеть в приведенном ниже примере, что мне нужно получить Департамент, чтобы получить модуль , Используя простые String@PathVariable сек я могу сделать это так:Может ли преобразованный @PathVariables ссылаться друг на друга?

@RequestMapping("/admin/{dept}/{mod}/") 
public String showModule(@PathVariable String dept, @PathVariable String mod) { 
    Department department = dao.findDepartment(dept); 
    Module module = department.findModule(mod); 
    return "view"; 
} 

Но я заинтересован в использовании Converter API Spring, чтобы иметь возможность указать Department непосредственно как @PathVariable. Так это работает после того, как я зарегистрировал собственный Converter класс:

@RequestMapping("/admin/{dept}/") 
public String showDept(@PathVariable Department dept) { 
    return "view"; 
} 

Но конвертер API не дает доступа за пределами единственного аргумента конвертируемые, так что это не возможно реализовать Converter для Module. Есть ли другой API, который я могу использовать? Я смотрю вверх HandlerMethodArgumentResolver - кто-нибудь решил проблему вроде этого, или вы придерживаетесь String @PathVariables?

Я использую Spring 3.1.

+0

, так что вам нужно знать отдел, чтобы загрузить модуль? –

+0

Это правильно. – Nick

ответ

1

Я не сделал это так, но один способ, которым я думал о том, чтобы сделать отдельный конвертер для обоих из них:

@RequestMapping("/admin/{deptAndModule}/") 
public String showDept(@PathVariable DepartmentAndModule deptAndModule) { 
    return "view"; 
} 

И есть преобразователь, способный принимать входной сигнал в форме " deptid-modid ", например "Ч-C104". Было бы невозможно отделить их косой чертой, поскольку запрос не соответствовал шаблону RequestMapping/admin/* /.

В моем случае требования несколько изменились, так что коды модулей полностью уникальны и не нуждаются в области управления. Поэтому мне больше не нужно это делать. Если бы я это сделал, я бы, вероятно, избегал автоматического преобразования модуля и делал это вручную в методе.

Смежные вопросы