1 7 package com.inversoft.verge.mvc.view.jsp.form; 8 9 10 import java.util.Iterator ; 11 12 import javax.servlet.jsp.JspException ; 13 14 import org.apache.log4j.Logger; 15 16 import com.inversoft.beans.BeanException; 17 import com.inversoft.util.StringTools; 18 import com.inversoft.verge.mvc.MVCException; 19 import com.inversoft.verge.mvc.MVCRequest; 20 import com.inversoft.verge.mvc.controller.form.FormMVCMetaData; 21 import com.inversoft.verge.mvc.controller.form.FormURLTools; 22 import com.inversoft.verge.mvc.controller.form.config.FormConfig; 23 import com.inversoft.verge.mvc.controller.form.config.FormConfigStruct; 24 import com.inversoft.verge.mvc.model.ModelResolution; 25 import com.inversoft.verge.mvc.model.form.FormMetaData; 26 import com.inversoft.verge.mvc.view.HtmlViewToolkit; 27 import com.inversoft.verge.mvc.view.ViewConstants; 28 import com.inversoft.verge.mvc.view.jsp.JspTools; 29 import com.inversoft.verge.mvc.view.jsp.model.ModelResolutionRegistry; 30 import com.inversoft.verge.util.WebBean; 31 32 33 38 public class FormTag extends com.inversoft.verge.mvc.view.jsp.html.FormTag { 39 40 43 private static final Logger logger = Logger.getLogger(FormTag.class); 44 45 46 private String form; 47 protected String localForm; 48 private String var; 49 protected FormMVCMetaData metaData; 50 protected FormConfig config; 51 52 53 58 public String getForm() { 59 return form; 60 } 61 62 67 public void setForm(String form) { 68 this.form = form; 69 } 70 71 76 public String getVar() { 77 return var; 78 } 79 80 85 public void setVar(String var) { 86 this.var = var; 87 } 88 89 94 public FormMVCMetaData getMetaData() { 95 return metaData; 96 } 97 98 103 public FormConfig getConfig() { 104 return config; 105 } 106 107 110 protected void initialize() throws JspException { 111 super.initialize(); 112 113 localForm = form; 114 115 if (!JspTools.JSP_20) { 116 localForm = (String ) JspTools.expand("form", form, String .class, 117 this, pageContext); 118 } 119 } 120 121 128 public int doStartTag() throws JspException { 129 initialize(); 130 setupForm(); 131 132 return super.doStartTag(); 133 } 134 135 141 void setupForm() throws JspException { 142 metaData = new FormMVCMetaData(localForm, null); 143 144 try { 145 config = (FormConfig) metaData.findFormConfig(pageContext.getRequest()); 146 } catch (MVCException mvce) { 147 logger.error(mvce); 148 throw new JspException ("Invalid form name: " + localForm, mvce); 149 } 150 151 MVCRequest mvcRequest = JspTools.getMVCRequest(pageContext); 154 FormConfigStruct struct = new FormConfigStruct(config, null, metaData); 155 mvcRequest.setConfiguration(struct); 156 157 boolean hasVar = !StringTools.isEmpty(var); 162 Iterator iter = config.getFormBeans().iterator(); 163 WebBean webBean; 164 Object bean; 165 String id; 166 FormMetaData md; 167 ModelResolution modelResolution; 168 169 while (iter.hasNext()) { 170 webBean = (WebBean) iter.next(); 171 172 try { 173 bean = webBean.getInstance(pageContext); 174 } catch (BeanException be) { 175 logger.error(be); 176 throw new JspException (be); 177 } 178 179 if (hasVar) { 182 id = var; 183 } else { 184 id = webBean.getID(); 185 } 186 pageContext.setAttribute(id, bean); 187 188 md = new FormMetaData(webBean.getID(), null); 190 modelResolution = new ModelResolution(bean, md); 191 ModelResolutionRegistry.store(id, modelResolution, pageContext); 192 } 193 194 } 195 196 204 protected void createForm(StringBuffer buf, String id, String name, String url, 205 String method) 206 throws JspException { 207 if (super.getName() == null) { 209 name = localForm; 210 } 211 212 String localURL = FormURLTools.generateURL(localForm, null); 213 super.createForm(buf, id, name, localURL, method); 214 215 HtmlViewToolkit.appendHiddenTag(buf, ViewConstants.MVC_HIDDEN_1, null); 216 HtmlViewToolkit.appendHiddenTag(buf, ViewConstants.MVC_HIDDEN_2, null); 217 } 218 } | Popular Tags |