KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > applications > faces > address > PhaseSync


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33 package com.icesoft.applications.faces.address;
34
35 import javax.faces.application.Application;
36 import javax.faces.context.FacesContext;
37 import javax.faces.event.PhaseEvent;
38 import javax.faces.event.PhaseId;
39 import javax.faces.event.PhaseListener;
40
41 /**
42  * PhaseSync listens to the JSF lifecycle for the INVOKE_APPLICATION PHASE. Its
43  * purpose is to solve the problem of ValueChangeListener methods that calculate
44  * values before the bean setters are called. PhaseSync prevents the calculated
45  * values from being overwritten by storing them temporarily and injecting them
46  * into the bean after the INVOKE_APPLICATION phase is complete, via
47  * FormProcessor.
48  *
49  * @see AddressFormProcessor
50  */

51 public class PhaseSync implements PhaseListener {
52
53     public void beforePhase(PhaseEvent event) {
54
55     }
56
57     /**
58      * Inject new values and update the submit button.
59      *
60      * @param event
61      */

62     public void afterPhase(PhaseEvent event) {
63
64         //AddressBean binding
65
Application application =
66                 FacesContext.getCurrentInstance().getApplication();
67         AddressFormProcessor process =
68                 ((AddressBean) application.createValueBinding("#{address}").
69                         getValue(FacesContext.getCurrentInstance())).
70                         getAddressFormProcessor();
71
72         //inject values
73
process.inject();
74
75         //update the submit button status
76
process.updateSubmitButton();
77     }
78
79     /**
80      * Listens for the INVOKE_APPLICATION phase.
81      */

82     public PhaseId getPhaseId() {
83
84         return PhaseId.INVOKE_APPLICATION;
85     }
86 }
Popular Tags