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.html;
20
21 import javax.faces.view.facelets.Tag;
22 import javax.faces.view.facelets.TagAttribute;
23 import javax.faces.view.facelets.TagAttributes;
24 import javax.faces.view.facelets.TagDecorator;
25
26 import org.apache.myfaces.view.facelets.tag.TagAttributesImpl;
27
28
29
30
31
32 public final class HtmlDecorator implements TagDecorator
33 {
34
35 public final static String XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
36
37 public final static HtmlDecorator INSTANCE = new HtmlDecorator();
38
39
40
41
42 public HtmlDecorator()
43 {
44 super();
45 }
46
47
48
49
50
51
52 public Tag decorate(Tag tag)
53 {
54 if (XHTML_NAMESPACE.equals(tag.getNamespace()))
55 {
56 String n = tag.getLocalName();
57 if ("a".equals(n))
58 {
59 return new Tag(tag.getLocation(), HtmlLibrary.NAMESPACE, "commandLink", tag.getQName(), tag
60 .getAttributes());
61 }
62 if ("form".equals(n))
63 {
64 return new Tag(tag.getLocation(), HtmlLibrary.NAMESPACE, "form", tag.getQName(), tag.getAttributes());
65 }
66 if ("input".equals(n))
67 {
68 TagAttribute attr = tag.getAttributes().get("type");
69 if (attr != null)
70 {
71 String t = attr.getValue();
72 TagAttributes na = removeType(tag.getAttributes());
73 if ("text".equals(t))
74 {
75 return new Tag(tag.getLocation(), HtmlLibrary.NAMESPACE, "inputText", tag.getQName(), na);
76 }
77 if ("password".equals(t))
78 {
79 return new Tag(tag.getLocation(), HtmlLibrary.NAMESPACE, "inputSecret", tag.getQName(), na);
80 }
81 if ("hidden".equals(t))
82 {
83 return new Tag(tag.getLocation(), HtmlLibrary.NAMESPACE, "inputHidden", tag.getQName(), na);
84 }
85 if ("submit".equals(t))
86 {
87 return new Tag(tag.getLocation(), HtmlLibrary.NAMESPACE, "commandButton", tag.getQName(), na);
88 }
89 }
90 }
91 }
92 return null;
93 }
94
95 private static TagAttributes removeType(TagAttributes attrs)
96 {
97 TagAttribute[] o = attrs.getAll();
98 TagAttribute[] a = new TagAttribute[o.length - 1];
99 int p = 0;
100 for (int i = 0; i < o.length; i++)
101 {
102 if (!"type".equals(o[i].getLocalName()))
103 {
104 a[p++] = o[i];
105 }
106 }
107 return new TagAttributesImpl(a);
108 }
109
110 }