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

Difference between a (stateless) Model and a LoadableDetachableModel

我看不出无状态模型和 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?无状态模型是否可以?我认为两者都是请求范围的。

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

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