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 jakarta.el.ELException;
24 import jakarta.faces.FacesException;
25 import jakarta.faces.component.UIComponent;
26 import jakarta.faces.view.facelets.FaceletContext;
27 import jakarta.faces.view.facelets.FaceletException;
28 import jakarta.faces.view.facelets.TagAttribute;
29 import jakarta.faces.view.facelets.TagConfig;
30 import jakarta.faces.view.facelets.TagException;
31 import jakarta.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 @JSFFaceletTag(
45 name = "f:attribute",
46 bodyContent = "empty",
47 tagClass="org.apache.myfaces.taglib.core.AttributeTag")
48 public final class AttributeHandler extends TagHandler
49 implements jakarta.faces.view.facelets.AttributeHandler
50 {
51 private final TagAttribute _name;
52
53 private final TagAttribute _value;
54
55
56
57
58 public AttributeHandler(TagConfig config)
59 {
60 super(config);
61 _name = getRequiredAttribute("name");
62 _value = getRequiredAttribute("value");
63 }
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 }