01: /*
02: * Version: MPL 1.1/GPL 2.0/LGPL 2.1
03: *
04: * "The contents of this file are subject to the Mozilla Public License
05: * Version 1.1 (the "License"); you may not use this file except in
06: * compliance with the License. You may obtain a copy of the License at
07: * http://www.mozilla.org/MPL/
08: *
09: * 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:
34: package com.icesoft.faces.el;
35:
36: import org.apache.commons.logging.Log;
37: import org.apache.commons.logging.LogFactory;
38:
39: import javax.faces.el.EvaluationException;
40: import javax.faces.el.PropertyNotFoundException;
41: import javax.faces.context.FacesContext;
42: import javax.faces.component.UIInput;
43: import javax.faces.el.ValueBinding;
44:
45: public class PartialSubmitValueBinding extends ValueBinding {
46: private ValueBinding wrapped;
47: private UIInput input;
48: private String clientId;
49:
50: private static final Log log = LogFactory
51: .getLog(PartialSubmitValueBinding.class);
52:
53: public PartialSubmitValueBinding(ValueBinding wrapped,
54: UIInput input, String clientId) {
55: this .wrapped = wrapped;
56: this .input = input;
57: this .clientId = clientId;
58: }
59:
60: public Object getValue(FacesContext facesContext)
61: throws EvaluationException, PropertyNotFoundException {
62: //PartialSubmit dictates that we obey "required" only for
63: //the single component causing the PartialSubmit. Components
64: //used in an iterative fashion have different client IDs for
65: //the same UIComponent instance.
66: if (clientId.equals(input.getClientId(facesContext))) {
67: return wrapped.getValue(facesContext);
68: }
69: return Boolean.FALSE;
70: }
71:
72: public void setValue(FacesContext facesContext, Object value)
73: throws EvaluationException, PropertyNotFoundException {
74: wrapped.setValue(facesContext, value);
75: }
76:
77: public boolean isReadOnly(FacesContext facesContext)
78: throws EvaluationException, PropertyNotFoundException {
79: return wrapped.isReadOnly(facesContext);
80: }
81:
82: public Class getType(FacesContext facesContext)
83: throws EvaluationException, PropertyNotFoundException {
84: return wrapped.getType(facesContext);
85: }
86:
87: public String getExpressionString() {
88: return wrapped.getExpressionString();
89: }
90:
91: }
|