1 24 package org.riotfamily.components.editor; 25 26 import java.io.PrintWriter ; 27 import java.io.StringWriter ; 28 29 import javax.servlet.http.HttpServletRequest ; 30 import javax.servlet.http.HttpServletResponse ; 31 32 import org.riotfamily.common.util.ResourceUtils; 33 import org.riotfamily.common.web.transaction.TransactionalController; 34 import org.riotfamily.forms.Form; 35 import org.riotfamily.forms.controller.ButtonFactory; 36 import org.riotfamily.forms.controller.FormSubmissionHandler; 37 import org.riotfamily.forms.factory.FormRepository; 38 import org.riotfamily.forms.factory.RepositoryFormController; 39 import org.springframework.web.servlet.ModelAndView; 40 41 47 public abstract class AbstractComponentFormController 48 extends RepositoryFormController 49 implements FormSubmissionHandler, TransactionalController { 50 51 private static final String SESSION_ATTRIBUTE = "componentForm"; 52 53 private String viewName = ResourceUtils.getPath( 54 AbstractComponentFormController.class, "ComponentFormView.ftl"); 55 56 private String successViewName = ResourceUtils.getPath( 57 AbstractComponentFormController.class, "ComponentFormSuccessView.ftl"); 58 59 private String formIdAttribute = "formId"; 60 61 public AbstractComponentFormController(FormRepository formRepository) { 62 super(formRepository); 63 ButtonFactory buttonFactory = new ButtonFactory(this); 64 buttonFactory.setLabelKey("label.form.button.save"); 65 buttonFactory.setCssClass("button button-save"); 66 addButton(buttonFactory); 67 } 68 69 public void setViewName(String viewName) { 70 this.viewName = viewName; 71 } 72 73 public void setSuccessViewName(String successViewName) { 74 this.successViewName = successViewName; 75 } 76 77 protected String getFormId(HttpServletRequest request) { 78 return (String ) request.getAttribute(formIdAttribute); 79 } 80 81 protected String getSessionAttribute(HttpServletRequest request) { 82 return SESSION_ATTRIBUTE; 83 } 84 85 protected ModelAndView showForm(final Form form, 86 HttpServletRequest request, HttpServletResponse response) 87 throws Exception { 88 89 StringWriter sw = new StringWriter (); 90 renderForm(form, new PrintWriter (sw)); 91 return new ModelAndView(viewName, "form", sw.toString()); 92 } 93 94 public ModelAndView handleFormSubmission(Form form, 95 HttpServletRequest request, HttpServletResponse response) 96 throws Exception { 97 98 onSave(form.populateBackingObject(), request); 99 return new ModelAndView(successViewName); 100 } 101 102 protected abstract void onSave(Object object, HttpServletRequest request); 103 104 } | Popular Tags |