6

以下は、「アイテムの追加」ユーザー要求を処理するための単純なSpringフォームコントローラーです。

@Controller
@RequestMapping("/addItem.htm")
public class AddItemFormController {

    @Autowired
    ItemService itemService;

    @RequestMapping(method = RequestMethod.GET)
    public String setupForm(ModelMap model) {
        return "addItem";
    }

    @ModelAttribute("item")
    public Item setupItem() {
        Item item = new Item();
        return item;
    }

    @RequestMapping(method = RequestMethod.POST)
    protected String addItem(@ModelAttribute("item") Item item) {
        itemService.addItem(item);
        return "itemAdded";
    }

}

私はどこかでそれを読みました:(...) the @ModelAttribute is also pulling double duty by populating the model with a new instance of Item before the form is displayed and then pulling the Item from the model so that it can be given to addItem() for processing.

私の質問は、いつ、どのくらいの頻度でsetupItem()正確に呼び出されるのかということです。ユーザーが複数のアイテムの追加を要求した場合、Springは別のモデルコピーを保持しますか?

4

1 に答える 1

10

は、メソッドが呼び出される直前に、このコントローラーsetupItemのいずれかのメソッドへの要求ごとに1回呼び出されます。したがって、メソッドのフローは次のようになります。を呼び出し、と呼ばれるモデル属性を作成します。引数もでタグ付けされているため、この時点でPOSTされたパラメーターで拡張されます。@RequestMapping@RequestMappingaddItemsetupItemitemaddItem@ModelAttributeitem

于 2012-07-15T20:58:45.773 に答える