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
43
44
45 @JSFFaceletTag(
46 name = "f:attribute",
47 bodyContent = "empty",
48 tagClass="org.apache.myfaces.taglib.core.AttributeTag")
49 public final class AttributeHandler extends TagHandler
50 implements javax.faces.view.facelets.AttributeHandler
51 {
52 private final TagAttribute _name;
53
54 private final TagAttribute _value;
55
56
57
58
59 public AttributeHandler(TagConfig config)
60 {
61 super(config);
62 _name = getRequiredAttribute("name");
63 _value = getRequiredAttribute("value");
64 }
65
66
67
68
69
70
71 public void apply(FaceletContext ctx, UIComponent parent) throws IOException, FacesException, FaceletException,
72 ELException
73 {
74 if (parent == null)
75 {
76 throw new TagException(this.tag, "Parent UIComponent was null");
77 }
78
79
80 if (parent.getParent() == null)
81 {
82 String n = _name.getValue(ctx);
83 if (!parent.getAttributes().containsKey(n))
84 {
85 if (_value.isLiteral())
86 {
87 parent.getAttributes().put(n, _value.getValue());
88 }
89 else
90 {
91 parent.setValueExpression(n, _value.getValueExpression(ctx, Object.class));
92 }
93 }
94 }
95 }
96
97 public String getAttributeName(FaceletContext ctx)
98 {
99 return _name.getValue(ctx);
100 }
101 }