2016-11-27 92 views
0

覆盖RequestToViewNameTranslator似乎比我想象的要困难。网上只有几个例子。Spring覆盖RequestToViewNameTranslator

该公式非常简单,在@Configuration中注册一个bean,bean必须实现接口RequestToViewNameTranslator。然后,重写getViewName方法。

当我在类ViewConfiguration中注册bean时,我可以中断。

@EnableWebMvc 
@Configuration 
public class ViewConfiguration { 

    @Bean 
    public ViewNameResolver viewNameResolver() { 
     return new ViewNameResolver(); 
    } 
} 

但是getViewName方法永远不会被调用。

public class ViewNameResolver implements RequestToViewNameTranslator { 

    @Override 
    public String getViewName(HttpServletRequest request) throws Exception { 

     return "test"; 
    } 
} 

也许有人可以指出为什么方法getViewName永远不会被调用。

回答

0

解决方法是在类ViewNameResolver上添加@Component(“viewNameTranslator”)。您也可以删除ViewConfiguration中的bean注册,因为它没用。我不明白为什么,但它有效。如果有人有解释可以随意写出来。