代码段如下:
@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配置文件中配置它?谢谢!
答案 0 :(得分:4)
我想真正的问题是如何通过XML配置autodiscovered bean的属性。
你可以通过定义一个与自动发现的名称相同的<bean>
来实现它(当未指定autodiscovered 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 :(得分:1)
嗯,可以在那里返回任何字符串。所以是的 - 它可以配置。
更新:有很多方法可以配置它,其中一个(和我的偏好)是PropertyPlaceholderConfigurer
和@Value
注释的组合,但这已经被axtavt所涵盖。