1 16 package org.apache.cocoon.forms.acting; 17 18 import org.apache.avalon.framework.thread.ThreadSafe; 19 import org.apache.avalon.framework.parameters.Parameters; 20 import org.apache.cocoon.acting.Action; 21 import org.apache.cocoon.environment.Redirector; 22 import org.apache.cocoon.environment.SourceResolver; 23 import org.apache.cocoon.environment.Request; 24 import org.apache.cocoon.environment.ObjectModelHelper; 25 import org.apache.cocoon.forms.FormContext; 26 import org.apache.cocoon.forms.event.FormHandler; 27 import org.apache.cocoon.forms.formmodel.Form; 28 import org.apache.cocoon.i18n.I18nUtils; 29 import org.apache.cocoon.components.LifecycleHelper; 30 import org.apache.excalibur.source.Source; 31 32 import java.util.Map ; 33 import java.util.Collections ; 34 import java.util.Locale ; 35 36 50 public class HandleFormSubmitAction extends AbstractFormsAction implements Action, ThreadSafe { 51 52 public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src, Parameters parameters) 53 throws Exception { 54 String formSource = parameters.getParameter("form-definition"); 55 String formAttribute = parameters.getParameter("attribute-name"); 56 String formHandlerClassName = parameters.getParameter("formhandler", null); 57 58 Locale locale = Locale.getDefault(); 59 String localeStr = parameters.getParameter("locale", null); 60 if (localeStr != null) { 61 locale = I18nUtils.parseLocale(localeStr, locale); 62 } 63 64 Source source = resolver.resolveURI(formSource); 65 try { 66 Form form = formManager.createForm(source); 67 68 Request request = ObjectModelHelper.getRequest(objectModel); 69 FormHandler formHandler = null; 70 71 if (formHandlerClassName != null) { 72 Class clazz = Class.forName(formHandlerClassName); 74 formHandler = (FormHandler)clazz.newInstance(); 75 LifecycleHelper.setupComponent(formHandler, null, null, manager, null); 76 form.setFormHandler(formHandler); 77 } 78 79 FormContext formContext = new FormContext(request, locale); 80 81 boolean finished = form.process(formContext); 82 request.setAttribute(formAttribute, form); 83 84 if (finished) { 85 return Collections.EMPTY_MAP; 86 } 87 return null; 88 } finally { 89 resolver.release(source); 90 } 91 } 92 } 93 | Popular Tags |