1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.facelets;
21
22 import org.apache.myfaces.tobago.component.Attributes;
23 import org.apache.myfaces.tobago.util.ComponentUtils;
24
25 import javax.el.ELException;
26 import javax.faces.FacesException;
27 import javax.faces.component.UIComponent;
28 import javax.faces.view.facelets.ComponentHandler;
29 import javax.faces.view.facelets.FaceletContext;
30 import javax.faces.view.facelets.TagAttribute;
31 import javax.faces.view.facelets.TagConfig;
32 import javax.faces.view.facelets.TagException;
33 import javax.faces.view.facelets.TagHandler;
34
35 public final class DataAttributeHandler extends TagHandler {
36
37 private final TagAttribute name;
38
39 private final TagAttribute value;
40
41 public DataAttributeHandler(TagConfig config) {
42 super(config);
43 this.name = getRequiredAttribute(Attributes.NAME);
44 this.value = getRequiredAttribute(Attributes.VALUE);
45 }
46
47 public void apply(FaceletContext faceletContext, UIComponent parent)
48 throws FacesException, ELException {
49 if (parent == null) {
50 throw new TagException(tag, "Parent UIComponent was null");
51 }
52
53 if (ComponentHandler.isNew(parent)) {
54
55 Object attributeName = name.isLiteral()
56 ? (Object) name.getValue(faceletContext)
57 : name.getValueExpression(faceletContext, Object.class);
58 Object attributeValue = value.isLiteral()
59 ? (Object) value.getValue(faceletContext)
60 : value.getValueExpression(faceletContext, Object.class);
61 ComponentUtils.putDataAttribute(parent, attributeName, attributeValue);
62 }
63 }
64 }