1 18 package org.apache.beehive.netui.tags.html; 19 20 import org.apache.beehive.netui.pageflow.ServletContainerAdapter; 21 import org.apache.beehive.netui.pageflow.internal.AdapterManager; 22 import org.apache.beehive.netui.pageflow.internal.BindingUpdateError; 23 import org.apache.beehive.netui.pageflow.internal.InternalUtils; 24 import org.apache.beehive.netui.tags.AbstractSimpleTag; 25 import org.apache.beehive.netui.util.Bundle; 26 27 import javax.servlet.ServletRequest ; 28 import javax.servlet.jsp.JspException ; 29 import javax.servlet.jsp.PageContext ; 30 import java.util.Iterator ; 31 import java.util.LinkedHashMap ; 32 33 52 public class BindingUpdateErrors extends AbstractSimpleTag 53 { 54 private String _expression = null; 55 private boolean _alwaysReport = false; 56 57 60 public String getTagName() 61 { 62 return "BindingUpdateErrors"; 63 } 64 65 80 public void setExpression(String expression) 81 throws JspException 82 { 83 _expression = setRequiredValueAttribute(expression, "expression"); 84 } 85 86 99 public void setAlwaysReport(boolean alwaysReport) 100 { 101 _alwaysReport = alwaysReport; 102 } 103 104 108 public void doTag() 109 throws JspException 110 { 111 if (hasErrors()) { 113 reportErrors(); 114 return; 115 } 116 117 PageContext pageContext = getPageContext(); 118 ServletContainerAdapter sa = AdapterManager.getServletContainerAdapter(pageContext.getServletContext()); 119 ServletRequest request = pageContext.getRequest(); 120 assert(sa != null); 121 122 boolean prodMode = sa.isInProductionMode(); 124 if (prodMode && !_alwaysReport) 125 return; 126 127 LinkedHashMap map = (LinkedHashMap ) 128 InternalUtils.getBindingUpdateErrors(request); 129 130 if (map == null) 131 return; 132 133 if (_expression != null) { 134 String expr = "{" + _expression + "}"; 135 BindingUpdateError err = (BindingUpdateError) map.get(expr); 136 if (err != null) { 137 Throwable cause = err.getCause(); 138 String msg = (cause != null) ? cause.getMessage() : err.getMessage(); 139 String s = Bundle.getString("Tags_BindingUpdateError", new Object []{_expression, msg}); 140 registerTagError(s, null); 141 reportErrors(); 142 } 143 return; 144 } 145 146 Iterator it = map.values().iterator(); 147 while (it.hasNext()) { 148 BindingUpdateError err = (BindingUpdateError) it.next(); 149 Throwable cause = err.getCause(); 150 String msg = (cause != null) ? cause.getMessage() : err.getMessage(); 151 String s = Bundle.getString("Tags_BindingUpdateError", new Object []{err.getExpression(), msg}); 152 registerTagError(s, null); 153 } 154 reportErrors(); 155 } 156 } 157 | Popular Tags |