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.component;
21
22 import org.apache.myfaces.tobago.component.OnComponentPopulated;
23 import org.apache.myfaces.tobago.util.ComponentUtils;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 import javax.faces.component.UIComponent;
28 import javax.faces.component.UISelectItem;
29 import javax.faces.context.FacesContext;
30
31 public class AbstractUISelectItem extends UISelectItem implements OnComponentPopulated {
32
33 private static final Logger LOG = LoggerFactory.getLogger(AbstractUISelectItem.class);
34
35 private boolean itemValueLiteral;
36
37 public void onComponentPopulated(FacesContext facesContext, UIComponent parent) {
38 if (itemValueLiteral) {
39 Object converted = ComponentUtils.getConvertedValue(
40 FacesContext.getCurrentInstance(), parent, (String) getItemValue());
41 super.setItemValue(converted);
42 }
43 }
44
45 @Override
46 public void setItemValue(Object itemValue) {
47 if (itemValue instanceof String) {
48 itemValueLiteral = true;
49 } else if (itemValue == null) {
50
51 } else {
52 LOG.warn("Unexpected type of literal for attribute 'itemValue': "
53 + "type=" + itemValue.getClass().getName() + " value='" + itemValue + "'.");
54 }
55 super.setItemValue(itemValue);
56 }
57 }