package ddth.dasp.framework.springmvc; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import ddth.dasp.common.rp.IRequestParser; import ddth.dasp.common.utils.DaspConstants; /** * Use this class as starting point for application SpringMVC form. * * @author NBThanh <btnguyen2k@gmail.com> * @version since v0.1.0 */ public abstract class BaseForm { private String name, action, cancelAction; private Map<String, Object> fields = new HashMap<String, Object>(); public BaseForm() { // EMPTY } public BaseForm(String name) { this.name = name; } public BaseForm(String name, String action) { this.name = name; this.action = action; } public BaseForm(String name, String action, String cancelAction) { this.name = name; this.action = action; this.cancelAction = cancelAction; } /** * Populate form fields from the http request. * * @param request */ public void populateFields(HttpServletRequest request) { String[] fieldList = getFieldList(); IRequestParser rp = (IRequestParser) request .getAttribute(DaspConstants.REQ_ATTR_REQUEST_PARSER); for (String field : fieldList) { Object value = rp != null ? rp.getFormField(field) : request.getParameter(field); setField(field, value); } } /** * Gets list of fields awared by this form. * * @return */ public abstract String[] getFieldList(); /** * Sets value for a field. * * @param name * @param value */ public void setField(String name, Object value) { fields.put(name, value); } /** * Gets value of a field. * * @param name * @return */ public Object getField(String name) { return fields.get(name); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getCancelAction() { return cancelAction; } public void setCancelAction(String cancelAction) { this.cancelAction = cancelAction; } }