繁体   English   中英

在Spring MVC 3中可以配置目标视图名称吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM