2017-03-06 54 views
0

当我点击/repairOnlineHome url时,尽管它在showRepairStep1()中初始化,但thymeleaf渲染wizardStep仍未初始化。Thymeleaf在控制器方法中设置之前渲染模型属性

如果下一步我打/repairOnlineHome2网址thymeleaf渲染的WizardStep与以前showRepairStep1设置()即的WizardStep等于1

什么是真正让我感到吃惊的是,它看起来像thymeleaf调用getter方法的WizardStep控制器方法之前设置正确的值值。

@Controller 
public class RepairController { 

    private Integer wizardStep;// = new Integer(1); 

    @ModelAttribute("wizardStep") 
    public Integer wizardStep(){ 
     return wizardStep; 
    } 

@RequestMapping({"/repairOnlineHome"}) 
public String showRepairStep1(final SeedStarter seedStarter) { 
    seedStarter.setDatePlanted(Calendar.getInstance().getTime()); 
    wizardStep = 1; 
    return "repairOnlineHome"; 
} 

@RequestMapping({"/repairOnlineHome2"}) 
public String showRepairStep2(final SeedStarter seedStarter) { 
    seedStarter.setDatePlanted(Calendar.getInstance().getTime()); 
    wizardStep = 2; 
    return "repairOnlineHome2"; 
} 
... 
} 

在HTML渲染我的WizardStep作为

<div>WizardStep: <span th:text="${wizardStep}">wizardStepNo</span></div> 

我的问题是:为什么thymeleaf呈现在控制器方法以及如何解决这一问题之前,设置模型属性。

回答

0

事实证明@ModelAttribute方法在用@RequestMapping注解的控制器方法被调用之前被调用。

所以,我注释掉的WizardStep()和开关

@RequestMapping({"/repairOnlineHome"}) 
public String showRepairStep1(Model model, final SeedStarter seedStarter) { 
    wizardStep = 1; 
    model.addAttribute("wizardStep", wizardStep); 
    return "repairOnlineHome"; 
} 
相关问题