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 org.apache.struts.action.ActionForm;
18: import org.strecks.action.BasicFormAction;
19: import org.strecks.context.ActionContext;
20: import org.strecks.controller.annotation.ActionInterface;
21: import org.strecks.form.controller.BindingForm;
22: import org.strecks.view.ViewAdapter;
23:
24: /**
25: * Action controller used to handle form rendering mechanisms used by action beans which implement the
26: * <code>BasicFormAction</code> interface
27: * @see org.strecks.action.BasicFormAction
28: * @author Phil Zoio
29: */
30: @ActionInterface(name=BasicFormAction.class)
31: public class BasicFormController extends BaseBasicController {
32:
33: @Override
34: protected ViewAdapter executeAction(Object actionBean,
35: ActionContext context) {
36:
37: BasicFormAction action = (BasicFormAction) actionBean;
38:
39: ActionForm form = context.getForm();
40:
41: boolean hasErrors = hasErrors(context);
42: action.setInputError(hasErrors);
43:
44: if (form instanceof BindingForm && !hasErrors) {
45: BindingForm bindingForm = (BindingForm) form;
46: bindingForm.setBindOutwards(true);
47: }
48:
49: String result = action.execute();
50:
51: if (form instanceof BindingForm) {
52: BindingForm validBindingForm = (BindingForm) form;
53:
54: if (validBindingForm.getBindOutwards()) {
55: validBindingForm.bindOutwards(actionBean);
56: }
57: }
58:
59: return getActionForward(context, result);
60:
61: }
62:
63: }
|