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.tag.jsf.core;
20
21 import java.io.IOException;
22
23 import javax.el.ELException;
24 import javax.faces.FacesException;
25 import javax.faces.component.UIComponent;
26 import javax.faces.view.facelets.FaceletContext;
27 import javax.faces.view.facelets.FaceletException;
28 import javax.faces.view.facelets.TagAttribute;
29 import javax.faces.view.facelets.TagConfig;
30 import javax.faces.view.facelets.TagException;
31 import javax.faces.view.facelets.TagHandler;
32
33 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
34
35
36
37
38
39
40
41
42 @JSFFaceletTag(
43 name = "f:facet",
44 bodyContent = "JSP",
45 tagClass="javax.faces.webapp.FacetTag")
46 public final class FacetHandler extends TagHandler
47 implements javax.faces.view.facelets.FacetHandler
48 {
49
50 public static final String KEY = "facelets.FACET_NAME";
51
52 protected final TagAttribute name;
53
54 public FacetHandler(TagConfig config)
55 {
56 super(config);
57 this.name = this.getRequiredAttribute("name");
58 }
59
60
61
62
63
64
65 public void apply(FaceletContext ctx, UIComponent parent) throws IOException, FacesException, FaceletException,
66 ELException
67 {
68 if (parent == null)
69 {
70 throw new TagException(this.tag, "Parent UIComponent was null");
71 }
72 parent.getAttributes().put(KEY, this.name.getValue(ctx));
73 try
74 {
75 this.nextHandler.apply(ctx, parent);
76 }
77 finally
78 {
79 parent.getAttributes().remove(KEY);
80 }
81 }
82
83 public String getFacetName(FaceletContext ctx)
84 {
85 return this.name.getValue(ctx);
86 }
87 }