1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.util;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 import javax.faces.component.UIComponent;
26 import javax.faces.context.FacesContext;
27 import javax.faces.el.ValueBinding;
28
29
30 public class ComponentAttributeUtils {
31
32 private static final Logger LOG = LoggerFactory.getLogger(ComponentAttributeUtils.class);
33
34 public static void setBooleanProperty(UIComponent component, String name, String value) {
35 if (value != null) {
36 if (isValueReference(value)) {
37 component.setValueBinding(name, createValueBinding(value));
38 } else {
39 component.getAttributes().put(name, Boolean.valueOf(value));
40 }
41 }
42 }
43
44 public static void setStringProperty(UIComponent component, String name, String value) {
45 if (value != null) {
46 if (isValueReference(value)) {
47 component.setValueBinding(name, createValueBinding(value));
48 } else {
49 component.getAttributes().put(name, value);
50 }
51 }
52 }
53
54 public static boolean isValueReference(String value) {
55
56 int start = value.indexOf("#{");
57 if (start < 0) {
58 return false;
59 }
60 int end = value.lastIndexOf('}');
61 return (end >=0 && start < end);
62 }
63
64 public static ValueBinding createValueBinding(String value) {
65 return FacesContext.getCurrentInstance().getApplication().createValueBinding(value);
66 }
67
68 }