[英]Is it possible to have destination view name configurable in 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配置文件中进行配置? 谢谢!
我想真正的问题是如何通过XML配置自动发现的bean的属性。
您可以通过定义一个<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
与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
好了,可以在那里返回任何字符串。 是的-可以配置。
更新:有很多方法可以配置它,其中一种(也是我的喜好)是PropertyPlaceholderConfigurer
和@Value
批注的组合,但是axtavt已经解决了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.