2011-01-11 4 views
3

現在、私はSpring MVCについての知識を広げたいと思っています。そのため、Spring配布に含まれるサンプルWebアプリケーションを調査しています。私は基本的にPetclinicアプリケーションをチェックしています。Spring MVCワークフローについてのヘルプ

GETメソッドでは、JSPオブジェクトがモデル属性に追加され、JSPがjavabeanプロパティにアクセスできるようになりました。私はこれを理解していると思う。

@Controller 
@RequestMapping("/addPet.do") 
@SessionAttributes("pet") 
public class AddPetForm { 
    @RequestMapping(method = RequestMethod.GET) 
    public String setupForm(@RequestParam("ownerId") int ownerId, Model model) { 
     Owner owner = this.clinic.loadOwner(ownerId); 
     Pet pet = new Pet(); 
     owner.addPet(pet); 
     model.addAttribute("pet", pet); 
     return "petForm"; 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result, SessionStatus status) { 
     new PetValidator().validate(pet, result); 
     if (result.hasErrors()) { 
      return "petForm"; 
     } 
     else { 
      this.clinic.storePet(pet); 
      status.setComplete(); 
      return "redirect:owner.do?ownerId=" + pet.getOwner().getId(); 
     } 
    } 
} 

しかし、私が理解できないことは、POST操作中です。私は自分の火かき棒を見つめて、自分の投稿データは私が納得するユーザーによって入力されたデータだけであることに気付きました。

alt text

しかし、私は私のコントローラ上のデータを検査するとき。所有者情報はまだ完全です。私はJSPから生成されたHTMLを調べますが、Ownerオブジェクトに関する隠れた情報は表示されません。私はSpringが所有者オブジェクトの情報をどこに集めているのかはよく分かりません。

これは、Springが各スレッド要求ごとにモデルオブジェクトをキャッシュしていることを意味しますか?

alt text

私のポストは少し長いですが、私はちょうどより多くのSpring MVCを理解したい場合は申し訳ありません。ところで、これはまだSpring MVC 2.5です。

答えて

5

この動作の鍵は、@SessionAttributes("pet")です。つまり、モデルのpet属性がセッションで保持されます。

意味
Pet pet = new Pet(); 
    owner.addPet(pet); 
    model.addAttribute("pet", pet); 

::ペットの所有者属性が設定されます場合は、Petオブジェクトを作成し、要求(@RequestParam("ownerId") int ownerId)で指定された所有者にそれを追加するには、これはおそらくですsetupFormでは、次の操作を実行します。

processSubmitメソッドでは、@ModelAttribute("pet") Pet petをメソッドシグネチャに宣言します。これは、セッションに以前に格納したPetオブジェクトを必要とすることを意味します。 Springはこのオブジェクトを取得し、JSPで設定されたものとマージします。したがって、所有者IDを記入してください。 HttpSessionの状態の他の部分に影響を与えずにSessionStatus.setComplete()をクリアすることができます(直接ではなくHttpSessionに)「対話状態」に保存されているSpring documentation

+1

詳しい情報...。 –

関連する問題