2010-12-01 21 views
2

代码片段是这样的:是否可以在spring mvc 3中配置目标视图名称?

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

“newtest”是硬编码的视图名。是否有可能将它配置为XML样式的Spring配置文件?谢谢!

回答

4

我想真正的问题是如何通过XML配置autodiscovered bean的属性。

您可以通过使用相同的名称定义<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与规划环境地政司表达式

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

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

或财产占位符

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

viewnames.properties

testViewName=oldtest 
1

那么,有可能返回任何字符串在那里。所以是的 - 它可以配置。

更新:有很多种方法来配置它,其中之一(和我的偏好)是PropertyPlaceholderConfigurer@Value注释的组合,但已经被axtavt覆盖。

+0

对不起,我应该提到,我真正的意思是有它在XML风格Spring配置文件中配置。 – Bobo 2010-12-01 19:46:58

相关问题