2017-03-06 55 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"; 
} 
相關問題