1 24 package org.riotfamily.components.component; 25 26 import java.util.Map ; 27 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 31 import org.riotfamily.common.web.util.ServletUtils; 32 import org.riotfamily.components.ComponentVersion; 33 import org.riotfamily.components.VersionContainer; 34 import org.springframework.web.util.WebUtils; 35 36 42 public class IncludeComponent extends AbstractComponent { 43 44 private String uri; 45 46 private boolean dynamic = true; 47 48 public void setUri(String uri) { 49 this.uri = uri; 50 } 51 52 protected void renderInternal(ComponentVersion componentVersion, 53 String positionClassName, HttpServletRequest request, 54 HttpServletResponse response) throws Exception { 55 56 Map snapshot = ServletUtils.takeAttributesSnapshot(request); 57 WebUtils.exposeRequestAttributes(request, buildModel(componentVersion)); 58 request.setAttribute(POSITION_CLASS, positionClassName); 59 request.setAttribute(COMPONENT_ID, String.valueOf(componentVersion.getId())); 60 request.setAttribute(THIS, componentVersion); 61 62 VersionContainer parentContainer = componentVersion.getContainer().getList().getParent(); 63 if (parentContainer != null) { 64 request.setAttribute(PARENT_ID, String.valueOf(parentContainer.getId())); 65 } 66 67 request.getRequestDispatcher(uri).include(request, response); 68 ServletUtils.restoreAttributes(request, snapshot); 69 } 70 71 public boolean isDynamic() { 72 return this.dynamic; 73 } 74 75 public void setDynamic(boolean dynamic) { 76 this.dynamic = dynamic; 77 } 78 79 } 80 | Popular Tags |