001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.wicket.core.request.handler; 018 019import org.apache.wicket.Component; 020import org.apache.wicket.request.IRequestCycle; 021import org.apache.wicket.request.component.IRequestableComponent; 022import org.apache.wicket.request.http.WebResponse; 023 024/** 025 * Request handler that renders a component 026 * 027 * @author igor.vaynberg 028 */ 029public class ComponentRenderingRequestHandler implements IComponentRequestHandler 030{ 031 private final Component component; 032 033 /** 034 * Construct. 035 * 036 * @param component 037 * the component to render 038 */ 039 public ComponentRenderingRequestHandler(Component component) 040 { 041 this.component = component; 042 } 043 044 @Override 045 public IRequestableComponent getComponent() 046 { 047 return component; 048 } 049 050 @Override 051 public void detach(IRequestCycle requestCycle) 052 { 053 component.getPage().detach(); 054 } 055 056 @Override 057 public void respond(IRequestCycle requestCycle) 058 { 059 // preventing the response to component from being cached 060 if (requestCycle.getResponse() instanceof WebResponse) 061 { 062 WebResponse response = (WebResponse)requestCycle.getResponse(); 063 response.disableCaching(); 064 } 065 066 component.beforeRender(); 067 component.renderPart(); 068 } 069 070 @Override 071 public final String getComponentPath() 072 { 073 return component.getPageRelativePath(); 074 } 075 076}