1 7 package com.inversoft.verge.mvc.view.jsp.actionflow; 8 9 10 import java.util.Iterator ; 11 import java.util.Map ; 12 13 import javax.servlet.jsp.JspException ; 14 15 import org.apache.log4j.Logger; 16 17 import com.inversoft.beans.BeanException; 18 import com.inversoft.verge.mvc.MVCException; 19 import com.inversoft.verge.mvc.config.BaseFormConfig; 20 import com.inversoft.verge.mvc.controller.actionflow.ActionFlowMetaData; 21 import com.inversoft.verge.mvc.controller.actionflow.ActionFlowURLTools; 22 import com.inversoft.verge.mvc.model.ModelResolution; 23 import com.inversoft.verge.mvc.model.actionflow.ActionFlowModelMetaData; 24 import com.inversoft.verge.mvc.view.jsp.JspTools; 25 import com.inversoft.verge.mvc.view.jsp.model.ModelResolutionRegistry; 26 import com.inversoft.verge.util.WebBean; 27 28 29 36 public class ATag extends com.inversoft.verge.mvc.view.jsp.html.ATag { 37 38 41 private static final Logger logger = Logger.getLogger(ATag.class); 42 43 private String action; 44 protected String localAction; 45 private String form; 46 protected String localForm; 47 private String entry; 48 protected String localEntry; 49 private String namespace; 50 protected String localNamespace; 51 private String category; 52 protected String localCategory; 53 54 55 60 public String getAction() { 61 return action; 62 } 63 64 69 public void setAction(String action) { 70 this.action = action; 71 } 72 73 78 public String getForm() { 79 return form; 80 } 81 82 87 public void setForm(String form) { 88 this.form = form; 89 } 90 91 96 public String getEntry() { 97 return entry; 98 } 99 100 105 public void setEntry(String entry) { 106 this.entry = entry; 107 } 108 109 114 public String getNamespace() { 115 return namespace; 116 } 117 118 123 public void setNamespace(String namespace) { 124 this.namespace = namespace; 125 } 126 127 132 public String getCategory() { 133 return category; 134 } 135 136 141 public void setCategory(String category) { 142 this.category = category; 143 } 144 145 148 protected void initialize() throws JspException { 149 super.initialize(); 150 151 localForm = form; 152 localAction = action; 153 localNamespace = namespace; 154 localEntry = entry; 155 localCategory = category; 156 157 if (!JspTools.JSP_20) { 158 localAction = (String ) JspTools.expand("action", action, String .class, 159 this, pageContext); 160 localNamespace = (String ) JspTools.expand("namespace", namespace, String .class, 161 this, pageContext); 162 localEntry = (String ) JspTools.expand("entry", entry, String .class, 163 this, pageContext); 164 localCategory = (String ) JspTools.expand("category", category, String .class, 165 this, pageContext); 166 } 167 168 if (form != null) { 171 172 ActionFlowMetaData metaData = new ActionFlowMetaData(localNamespace, localForm, 174 localEntry, localAction, null); 175 BaseFormConfig config = null; 176 try { 177 config = metaData.findFormConfig(pageContext.getRequest()); 178 } catch (MVCException mvce) { 179 logger.error(mvce); 180 throw new JspException ("Invalid form name: " + localForm, mvce); 181 } 182 183 Iterator iter = config.getFormBeans().iterator(); 185 WebBean webBean; 186 Object bean; 187 ActionFlowModelMetaData md; 188 ModelResolution modelResolution; 189 String key; 190 191 while (iter.hasNext()) { 192 webBean = (WebBean) iter.next(); 193 key = webBean.getID(); 194 195 try { 196 bean = webBean.getInstance(pageContext); 197 } catch (BeanException be) { 198 logger.error(be); 199 throw new JspException (be); 200 } 201 202 pageContext.setAttribute(key, bean); 203 204 md = new ActionFlowModelMetaData(key, null); 206 modelResolution = new ModelResolution(bean, md); 207 ModelResolutionRegistry.store(key, modelResolution, pageContext); 208 } 209 } 210 } 211 212 222 protected void createATag(StringBuffer buf, String id, String name, 223 String href, Map parameters) 224 throws JspException { 225 226 String url = ActionFlowURLTools.generateURL(localNamespace, localForm, 228 localAction, localEntry); 229 230 super.createATag(buf, id, name, url, parameters); 233 } 234 } | Popular Tags |