⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadabledetachablemodel.java

📁 Wicket一个开发Java Web应用程序框架。它使得开发web应用程序变得容易而轻松。 Wicket利用一个POJO data beans组件使得它可以与任何持久层技术相结合。
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.wicket.model;import org.apache.wicket.Component;import org.apache.wicket.RequestCycle;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * Model that makes working with detachable models a breeze. LoadableDetachableModel holds a * temporary, transient model object, that is set when {@link #getObject(Component)} is called by * calling abstract method 'load', and that will be reset/ set to null on {@link #detach()}. *  * A usage example: *  * <pre> * LoadableDetachableModel venueListModel = new LoadableDetachableModel() * { * 	protected Object load() * 	{ * 		return getVenueDao().findVenues(); * 	} * }; * </pre> *  * <p> * Though you can override methods {@link #onAttach()} and {@link #onDetach()} for additional * attach/ detach behavior, the point of this class is to hide as much of the attaching/ detaching * as possible. So you should rarely need to override those methods, if ever. * </p> *  * @author Eelco Hillenius * @author Igor Vaynberg */public abstract class LoadableDetachableModel extends AbstractReadOnlyModel{	/**	 * 	 */	private static final long serialVersionUID = 1L;	/** Logger. */	private static final Logger log = LoggerFactory.getLogger(LoadableDetachableModel.class);	/** keeps track of whether this model is attached or detached */	private transient boolean attached = false;	/** temporary, transient object. */	private transient Object transientModelObject;	/**	 * Construct.	 */	public LoadableDetachableModel()	{	}	/**	 * This constructor is used if you already have the object retrieved and want to wrap it with a	 * detachable model.	 * 	 * @param object	 *            retrieved instance of the detachable object	 */	public LoadableDetachableModel(Object object)	{		this.transientModelObject = object;		attached = true;	}	/**	 * @see org.apache.wicket.model.IDetachable#detach()	 */	public void detach()	{		if (attached)		{			attached = false;			transientModelObject = null;			if (log.isDebugEnabled())			{				log.debug("removed transient object for " + this + ", requestCycle " +						RequestCycle.get());			}			onDetach();		}	}	/**	 * @see org.apache.wicket.model.IModel#getObject()	 */	public Object getObject()	{		if (!attached)		{			attached = true;			transientModelObject = load();			if (log.isDebugEnabled())			{				log.debug("loaded transient object " + transientModelObject + " for " + this +						", requestCycle " + RequestCycle.get());			}			onAttach();		}		return transientModelObject;	}	/**	 * Gets the attached status of this model instance	 * 	 * @return true if the model is attached, false otherwise	 */	public final boolean isAttached()	{		return attached;	}	/**	 * @see java.lang.Object#toString()	 */	public String toString()	{		StringBuffer sb = new StringBuffer(super.toString());		sb.append(":attached=").append(attached).append(":tempModelObject=[").append(				this.transientModelObject).append("]");		return sb.toString();	}	/**	 * Loads and returns the (temporary) model object.	 * 	 * @return the (temporary) model object	 */	protected abstract Object load();	/**	 * Attaches to the current request. Implement this method with custom behavior, such as loading	 * the model object.	 */	protected void onAttach()	{	}	/**	 * Detaches from the current request. Implement this method with custom behavior, such as	 * setting the model object to null.	 */	protected void onDetach()	{	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -