2010-12-01 16 views
2

Extrait de code est comme ceci:Est-il possible d'avoir un nom de vue de destination configurable au printemps 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" est le nom de la vue codée en dur. Est-il possible de le configurer dans un fichier de configuration Spring de style XML? Je vous remercie!

Répondre

4

Je suppose que la vraie question est de savoir comment configurer les propriétés du bean autodiscovered via XML.

Vous pouvez le faire en définissant un <bean> avec le même nom que celui autodiscovered a (lorsque le nom du haricot autodiscovered n'est pas spécifié, il est supposé être un nom de classe avec la première lettre décapitalisé):

@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> 

Une autre option consiste à utiliser @Value avec SPEL expressions

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

.

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

ou des espaces réservés propriété

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

.

viewnames.properties:

testViewName=oldtest 
1

Eh bien, il est possible d'y retourner n'importe quelle chaîne. Alors oui - il peut être configuré.

Mise à jour: il existe plusieurs façons de le configurer, dont l'une (et ma préférence) étant une combinaison de PropertyPlaceholderConfigurer et l'annotation @Value, mais cela était déjà couvert par axtavt.

+0

désolé, je l'ai mentionné que ce que je veux dire vraiment est d'avoir configuré ce dans un style xml fichier de configuration Spring. – Bobo