Возможно ли иметь имя целевого вида, настраиваемое весной mvc 3? - PullRequest
2 голосов
/ 01 декабря 2010

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

@Controller
@RequestMapping(value="/test")
public class TestController {
........        
    @RequestMapping(method=RequestMethod.GET)
    public String getCreateForm(Model model) {
        model.addAttribute(new AccountBean());
        return "newtest";
    }
.........

"newtest" - это жестко закодированное имя представления.Возможно ли настроить его в конфигурационном файле Spring в стиле XML?Спасибо!

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

Полагаю, что реальный вопрос заключается в том, как настроить свойства автоматически обнаруженного bean-компонента через XML.

Вы можете сделать это, определив <bean> с тем же именем, что и у автообнаруженного (когда имя автообнаруженногоbean-компонент не указан, предполагается, что это имя класса с декапитализированной первой буквой):

@Controller 
@RequestMapping(value="/test") 
public class TestController { 
    private String viewName = "newtest";

    public void setViewName(String viewName) {
        this.viewName = viewName;
    }

    @RequestMapping(method=RequestMethod.GET) 
    public String getCreateForm(Model model) { 
        model.addAttribute(new AccountBean()); 
        return viewName; 
    } 
}

.

<bean id = "testController" class = "TestController">
    <property name = "viewName" value = "oldtest" />
</bean>

Другой вариант - использовать @Value с выражениями SpEL

@Value("#{testViewName}") private String viewName;

.

<bean id = "testViewName" class = "java.lang.String">
    <constructor-arg value = "oldtest" />
</bean>

или заполнителей свойств

@Value("${testViewName}") private String viewName;

.

<context:property-placeholder location = "viewnames" />

viewnames.properties:

testViewName=oldtest
1 голос
/ 01 декабря 2010

Ну, там можно вернуть любую строку.Так что да - его можно настроить.

Обновление: существует множество способов его настройки, один из которых (и мое предпочтение) представляет собой комбинацию PropertyPlaceholderConfigurer и аннотации @Value, но это уже былопокрыт аксавт.

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