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.view.ViewResolutionException; 32 import org.riotfamily.common.web.view.ViewResolverHelper; 33 import org.riotfamily.components.ComponentVersion; 34 import org.riotfamily.components.VersionContainer; 35 import org.springframework.web.servlet.ModelAndView; 36 import org.springframework.web.servlet.View; 37 import org.springframework.web.servlet.support.RequestContextUtils; 38 39 44 public class ViewComponent extends AbstractComponent { 45 46 private String viewName; 47 48 private boolean dynamic = false; 49 50 public void setViewName(String viewName) { 51 this.viewName = viewName; 52 } 53 54 protected void renderInternal(ComponentVersion componentVersion, 55 String positionClassName, HttpServletRequest request, 56 HttpServletResponse response) throws Exception { 57 58 Map model = buildModel(componentVersion); 59 model.put(POSITION_CLASS, positionClassName); 60 model.put(COMPONENT_ID, String.valueOf(componentVersion.getId())); 61 model.put(THIS, componentVersion); 62 63 VersionContainer parentContainer = componentVersion.getContainer().getList().getParent(); 64 if (parentContainer != null) { 65 request.setAttribute(PARENT_ID, String.valueOf(parentContainer.getId())); 66 } 67 68 ModelAndView mv = new ModelAndView(viewName, model); 69 try { 70 View view = new ViewResolverHelper( 71 RequestContextUtils.getWebApplicationContext(request)) 72 .resolveView(request, mv); 73 74 view.render(model, request, response); 75 } 76 catch (ViewResolutionException e) { 77 log.warn("ViewResolutionException - Skipping component ...", e); 78 } 79 } 80 81 public boolean isDynamic() { 82 return this.dynamic; 83 } 84 85 public void setDynamic(boolean dynamic) { 86 this.dynamic = dynamic; 87 } 88 89 } 90 | Popular Tags |