1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package javax.faces.component;
20
21 import java.util.Arrays;
22 import java.util.Iterator;
23
24 import javax.faces.context.FacesContext;
25 import javax.faces.model.SelectItem;
26 import javax.faces.model.SelectItemGroup;
27
28
29
30
31
32 class _SelectItemsUtil
33 {
34 public static interface _ValueConverter
35 {
36 Object getConvertedValue(FacesContext context, String value);
37 }
38
39
40
41
42
43
44
45
46 public static boolean matchValue(FacesContext context, Object value,
47 Iterator<SelectItem> selectItemsIter, _ValueConverter converter)
48 {
49 while (selectItemsIter.hasNext())
50 {
51 SelectItem item = selectItemsIter.next();
52 if (item instanceof SelectItemGroup)
53 {
54 SelectItemGroup itemgroup = (SelectItemGroup) item;
55 SelectItem[] selectItems = itemgroup.getSelectItems();
56 if (selectItems != null
57 && selectItems.length > 0
58 && matchValue(context, value, Arrays.asList(
59 selectItems).iterator(), converter))
60 {
61 return true;
62 }
63 }
64 else
65 {
66 Object itemValue = item.getValue();
67 if(converter != null && itemValue instanceof String)
68 {
69 itemValue = converter.getConvertedValue(context, (String)itemValue);
70 }
71 if (value==itemValue || value.equals(itemValue))
72 {
73 return true;
74 }
75 }
76 }
77 return false;
78 }
79 }