1 26 package org.ofbiz.webapp.region; 27 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.jsp.JspException ; 30 31 import org.ofbiz.base.util.Debug; 32 33 41 public class RenderTag extends RegionTag { 42 43 public static final String module = RenderTag.class.getName(); 44 45 private String sectionName = null; 46 private String role = null; 47 private String permission = null; 48 private String action = null; 49 50 public void setSection(String s) { 51 this.sectionName = s; 52 } 53 54 public void setRole(String s) { 55 this.role = s; 56 } 57 58 public void setPermission(String permission) { 59 this.permission = permission; 60 } 61 62 public void setAction(String action) { 63 this.action = action; 64 } 65 66 protected boolean renderingRegion() { 67 return sectionName == null; 68 } 69 70 protected boolean renderingSection() { 71 return sectionName != null; 72 } 73 74 public int doStartTag() throws JspException { 75 HttpServletRequest request = (HttpServletRequest ) 76 pageContext.getRequest(); 77 78 if (role != null && !request.isUserInRole(role)) 79 return SKIP_BODY; 80 81 if (renderingRegion()) { 82 if (!findRegionByKey()) { 83 createRegionFromTemplate(null); 84 } 85 RegionStack.push(pageContext.getRequest(), regionObj); 86 } 87 return EVAL_BODY_INCLUDE; 88 } 89 90 public int doEndTag() throws JspException { 91 Region regionEnd = null; 92 93 try { 94 regionEnd = RegionStack.peek(pageContext.getRequest()); 95 } catch (Exception e) { 96 throw new JspException ("Error finding region on stack: " + e.getMessage()); 97 } 98 99 if (regionEnd == null) 100 throw new JspException ("Can't find region on stack"); 101 102 if (renderingSection()) { 103 Section section = regionEnd.get(sectionName); 104 105 if (section == null) 106 return EVAL_PAGE; 108 section.render(pageContext); 109 } else if (renderingRegion()) { 110 try { 111 regionEnd.render(pageContext); 112 RegionStack.pop(pageContext.getRequest()); 113 } catch (Exception ex) { 114 Debug.logError(ex, "Error rendering region [" + regionEnd.getId() + "]: ", module); 115 throw new JspException ("Error rendering region [" + regionEnd.getId() + "]: " + ex.getMessage()); 117 } 118 } 119 return EVAL_PAGE; 120 } 121 122 public void release() { 123 super.release(); 124 sectionName = role = null; 125 } 126 } 127 | Popular Tags |