(无状态)模型和LoadableDetachableModel之间的区别

时间:2017-04-26 09:58:03

标签: wicket

我没有看到无状态模型和LoadableDetachableModel之间的区别。 假设我有:

    IModel<String>model=new Model<String>(){
        @Override
        public String getObject() {
            return new Date().toString();
        }
    };
    IModel<String>model2=new LoadableDetachableModel<String>() {
        @Override
        protected String load() {
            return new Date().toString();
        }
    };  
    Label label = new Label("label",model);
    add(label);
    Label label2 = new Label("label2",model2);
    add(label2);

第一个模型是无状态的,所以没有任何序列化。第二个LoadableDetachableModel具有状态,该状态设置为load()的结果,但它是瞬态的,因此也没有序列化。

为什么存在LoadableDetachableModel?无状态模型是否可以?我认为两者都是请求范围。

1 个答案:

答案 0 :(得分:3)

是的,您的模型在请求后都不会保留任何状态。

但是您的第一个模型的getObject()将被多次调用,而LoadableDetachableModel是请求范围的,即load()仅针对每个请求调用一次。