1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.view.facelets.pss.acid.component;
20
21 import java.util.HashMap;
22 import java.util.Map;
23 import javax.faces.component.FacesComponent;
24 import javax.faces.component.UIComponent;
25 import javax.faces.component.UIComponentBase;
26 import javax.faces.component.UIViewRoot;
27 import javax.faces.context.FacesContext;
28 import javax.faces.event.AbortProcessingException;
29 import javax.faces.event.PreRenderViewEvent;
30 import javax.faces.event.SystemEvent;
31 import javax.faces.event.SystemEventListener;
32 import javax.faces.view.ViewDeclarationLanguage;
33
34 @FacesComponent(value = "com.myapp.UIAddSimpleIncludeVDL2")
35 public class UIAddSimpleIncludeVDL2 extends UIComponentBase implements
36 SystemEventListener
37 {
38
39
40
41
42
43 public UIAddSimpleIncludeVDL2()
44 {
45 setRendererType(null);
46
47 FacesContext context = FacesContext.getCurrentInstance();
48 UIViewRoot root = context.getViewRoot();
49
50 root.subscribeToViewEvent(PreRenderViewEvent.class, this);
51 }
52
53
54
55
56
57 @Override
58 public String getFamily()
59 {
60
61 return "com.myapp";
62 }
63
64 public boolean isListenerForSource(Object source)
65 {
66
67 return (source instanceof UIViewRoot);
68 }
69
70 public void processEvent(SystemEvent event) throws AbortProcessingException
71 {
72 FacesContext facesContext = FacesContext.getCurrentInstance();
73 if (!facesContext.isPostback())
74 {
75 ViewDeclarationLanguage vdl = facesContext.getApplication().
76 getViewHandler().getViewDeclarationLanguage(
77 facesContext, facesContext.getViewRoot().getViewId());
78
79 Map<String, Object> attributes = new HashMap<String, Object>();
80 attributes.put("src", "/addSimpleIncludeVDL_2_1.xhtml");
81 Map<String, Object> paramsMap = new HashMap<String, Object>();
82 paramsMap.put("param1", "value1");
83 paramsMap.put("param2", facesContext.getApplication().getExpressionFactory().createValueExpression(
84 facesContext.getELContext(), "#{testBean.param2}" ,String.class));
85 attributes.put("params", paramsMap);
86 UIComponent component = vdl.createComponent(facesContext,
87 "http://java.sun.com/jsf/facelets",
88 "include", attributes);
89 getChildren().add(component);
90
91 }
92 }
93 }