1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.ajaxchildcombobox;
20
21 import javax.faces.application.Application;
22 import javax.faces.el.MethodBinding;
23
24 import com.sun.facelets.FaceletContext;
25 import com.sun.facelets.tag.TagAttribute;
26 import com.sun.facelets.tag.jsf.ComponentConfig;
27 import com.sun.facelets.tag.jsf.html.HtmlComponentHandler;
28
29 public class AjaxChildComboBoxTagHandler extends HtmlComponentHandler {
30
31 private static final String AJAX_SELECT_ITEMS_METHOD = "ajaxSelectItemsMethod";
32
33 private static final Class [] ajaxSelectItemsMethodParamList = new Class[]{String.class};
34
35 private TagAttribute ajaxSelectItemsMethodAttr;
36
37 public AjaxChildComboBoxTagHandler(ComponentConfig tagConfig) {
38 super(tagConfig);
39 ajaxSelectItemsMethodAttr = getAttribute(AJAX_SELECT_ITEMS_METHOD);
40 }
41
42 protected void setAttributes(FaceletContext ctx, Object instance)
43 {
44 super.setAttributes(ctx, instance);
45
46 Application app = ctx.getFacesContext().getApplication();
47
48 AjaxChildComboBox comp = (AjaxChildComboBox) instance;
49
50 if (ajaxSelectItemsMethodAttr != null){
51 String _ajaxSelectItemsMethod = ajaxSelectItemsMethodAttr.getValue();
52 if (_ajaxSelectItemsMethod != null)
53 {
54 MethodBinding mb = app.createMethodBinding(
55 _ajaxSelectItemsMethod, ajaxSelectItemsMethodParamList);
56 comp.setAjaxSelectItemsMethod(mb);
57 }
58 }
59 }
60 }