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

📄 inlineframe.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.markup.html.link;import org.apache.wicket.IPageMap;import org.apache.wicket.Page;import org.apache.wicket.PageMap;import org.apache.wicket.PageParameters;import org.apache.wicket.RequestCycle;import org.apache.wicket.Session;import org.apache.wicket.markup.ComponentTag;import org.apache.wicket.markup.html.WebMarkupContainer;import org.apache.wicket.request.RequestParameters;import org.apache.wicket.util.string.Strings;/** * Implementation of an <a href="http://www.w3.org/TR/REC-html40/present/frames.html#h-16.5">inline * frame</a> component. Must be used with an iframe (&lt;iframe src...) element. The src attribute * will be generated. *  * @author Sven Meier * @author Ralf Ebert */public class InlineFrame extends WebMarkupContainer implements ILinkListener{	private static final long serialVersionUID = 1L;	/** The link. */	private final IPageLink pageLink;	/**	 * The pagemap name where the page that will be created by this inline frame will be created in.	 */	private final String pageMapName;	/**	 * Constructs an inline frame that instantiates the given Page class when the content of the	 * inline frame is requested. The instantiated Page is used to render a response to the user.	 * 	 * @param id	 *            See Component	 * @param pageMap	 *            the pagemap where the page of the inline frame must be in	 * @param c	 *            Page class	 */	public InlineFrame(final String id, final IPageMap pageMap, final Class c)	{		this(id, pageMap, c, null);	}	/**	 * Constructs an inline frame that instantiates the given Page class when the content of the	 * inline frame is requested. The instantiated Page is used to render a response to the user.	 * 	 * @param id	 *            See Component	 * @param pageMap	 *            the pagemap where the page of the inline frame must be in	 * @param c	 *            Page class	 * @param params	 *            Page parameters	 */	public InlineFrame(final String id, final IPageMap pageMap, final Class c,			final PageParameters params)	{		this(id, pageMap, new IPageLink()		{			private static final long serialVersionUID = 1L;			public Page getPage()			{				if (params == null)				{					// Create page using page factory					return Session.get().getPageFactory().newPage(c);				}				else				{					return Session.get().getPageFactory().newPage(c, params);				}			}			public Class getPageIdentity()			{				return c;			}		});		// Ensure that c is a subclass of Page		if (!Page.class.isAssignableFrom(c))		{			throw new IllegalArgumentException("Class " + c + " is not a subclass of Page");		}	}	/**	 * This constructor is ideal if a Page object was passed in from a previous Page. Construct an	 * inline frame containing the given Page.	 * 	 * @param id	 *            See component	 * @param page	 *            The page	 */	public InlineFrame(final String id, final Page page)	{		this(id, page.getPageMap(), new IPageLink()		{			private static final long serialVersionUID = 1L;			public Page getPage()			{				// use given page				return page;			}			public Class getPageIdentity()			{				return page.getClass();			}		});	}	/**	 * This constructor is ideal for constructing pages lazily.	 * 	 * Constructs an inline frame which invokes the getPage() method of the IPageLink interface when	 * the content of the inline frame is requested. Whatever Page objects is returned by this	 * method will be rendered back to the user.	 * 	 * @param id	 *            See Component	 * @param pageMap	 *            the pagemap where the page of the inline frame must be in	 * @param pageLink	 *            An implementation of IPageLink which will create the page to be contained in the	 *            inline frame if and when the content is requested	 */	public InlineFrame(final String id, final IPageMap pageMap, IPageLink pageLink)	{		super(id);		pageMapName = pageMap.getName();		this.pageLink = pageLink;	}	/**	 * Gets the url to use for this link.	 * 	 * @return The URL that this link links to	 */	protected CharSequence getURL()	{		return urlFor(ILinkListener.INTERFACE);	}	/**	 * Handles this frame's tag.	 * 	 * @param tag	 *            the component tag	 * @see org.apache.wicket.Component#onComponentTag(ComponentTag)	 */	protected final void onComponentTag(final ComponentTag tag)	{		checkComponentTag(tag, "iframe");		// Set href to link to this frame's frameRequested method		CharSequence url = getURL();		// generate the src attribute		tag.put("src", Strings.replaceAll(url, "&", "&amp;"));		super.onComponentTag(tag);	}	/**	 * @see org.apache.wicket.markup.html.link.ILinkListener#onLinkClicked()	 */	public final void onLinkClicked()	{		RequestParameters parameters = RequestCycle.get().getRequest().getRequestParameters();		String oldPageMapName = parameters.getPageMapName();		try		{			if (pageMapName != null)			{				RequestCycle.get().getRequest().getRequestParameters().setPageMapName(pageMapName);			}			setResponsePage(pageLink.getPage());		}		finally		{			RequestCycle.get().getRequest().getRequestParameters().setPageMapName(oldPageMapName);		}	}	/**	 * Returns the pageMap.	 * 	 * @return pageMap	 */	public final IPageMap getPageMap()	{		return PageMap.forName(pageMapName);	}	protected boolean getStatelessHint()	{		/*		 * TODO optimization: the inlineframe component does not always have to be stateless.		 * 		 * unfortunately due to current implementation always using ipagelink and a ilinklistener		 * callback it has to always be *stateful* because it can be put inside a listview item		 * which will not be built upon a stateless callback causing a "component at path		 * listview:0:iframe not found" error.		 * 		 * eventually variant such as (string, ipagemap, class<? extends Page>) can be made		 * stateless because they can generate a bookmarkable url. another advantage of a		 * bookmarkable url is that multiple iframes will not block.		 */		return false;	}}

⌨️ 快捷键说明

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