2017-03-06 4 views
0

/repairOnlineHomeと表示されたときに、showRepairStep1()で初期化されていてもwizardStepは初期化されません。Thymeleafレンダリングモデルの属性がコントローラーメソッドで先に設定されています

は、次のステップにした場合、私はすなわちwizardStepが本当にそれが正しい設定コントローラのメソッドの前にwizardStepためthymeleafコールゲッターのように見えることを私を驚かせる何

1に等しい)(前回showRepairStep1に設定された値でwizardStepをレンダリングthymeleaf /repairOnlineHome2 URLを打ちます値。 HTMLで

@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"; 
} 
... 
} 

私は

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

としてwizardStepをレンダリング私の質問は:なぜモデルをレンダリングthymeleaf前に、それはコントローラのメソッドとどのようにこの問題を解決するには設定された属性。

答えて

0

@ModelAttributeメソッドは、@RequestMappingで注釈が付けられたコントローラメソッドが呼び出される前に呼び出されます。

だから、私は(wizardStepをコメントアウト)と

@RequestMapping({"/repairOnlineHome"}) 
public String showRepairStep1(Model model, final SeedStarter seedStarter) { 
    wizardStep = 1; 
    model.addAttribute("wizardStep", wizardStep); 
    return "repairOnlineHome"; 
} 
に切り替え
関連する問題