01: /*
02: * Copyright 2005-2006 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
05: * in compliance with the License. You may obtain a copy of the License at
06: *
07: * http://www.apache.org/licenses/LICENSE-2.0
08: *
09: * Unless required by applicable law or agreed to in writing, software distributed under the License
10: * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11: * or implied. See the License for the specific language governing permissions and limitations under
12: * the License.
13: */
14:
15: package org.strecks.action.basic;
16:
17: import javax.servlet.http.HttpServletRequest;
18:
19: import org.apache.struts.Globals;
20: import org.apache.struts.action.ActionForm;
21: import org.strecks.action.BasicSubmitAction;
22: import org.strecks.context.ActionContext;
23: import org.strecks.controller.annotation.ActionInterface;
24: import org.strecks.form.controller.BindingForm;
25: import org.strecks.view.ViewAdapter;
26:
27: /**
28: * Action controller used to handle form submission mechanisms used by action beans which implement the
29: * <code>BasicSubmitAction</code> interface
30: * @see org.strecks.action.BasicSubmitAction
31: * @author Phil Zoio
32: */
33: @ActionInterface(name=BasicSubmitAction.class)
34: public class BasicSubmitController extends BaseBasicController {
35:
36: @Override
37: protected ViewAdapter executeAction(Object actionBean,
38: ActionContext context) {
39:
40: BasicSubmitAction action = (BasicSubmitAction) actionBean;
41: ActionForm form = context.getForm();
42:
43: HttpServletRequest request = context.getRequest();
44:
45: boolean cancelled = false;
46: if (request.getAttribute(Globals.CANCEL_KEY) != null) {
47: cancelled = true;
48: }
49:
50: //FIXME call deferred form validation here
51:
52: //FIXME call validation methods here
53:
54: if (form instanceof BindingForm && !cancelled) {
55: action.preBind();
56: BindingForm bindingForm = (BindingForm) form;
57: bindingForm.bindInwards(actionBean);
58: }
59:
60: String result = cancelled ? action.cancel() : action.execute();
61: return getActionForward(context, result);
62:
63: }
64:
65: }
|