[NEW] add escape attribute to Label renderer.
CRAIG: ok with this resolution?
SECTION: API Changes
M jsf-api/doc/output-label-attrs.xml
M jsf-api/doc/output-label-props.xml
- add escape attribute. Defaults to "false" for compatability with
existing implementation.
M jsf-api/doc/standard-html-renderkit.xml
- output of executing create.standard.xml
SECTION: RI Changes
M jsf-ri/src/com/sun/faces/renderkit/html_basic/LabelRenderer.java
- honor the "escape" attribute, if present
M jsf-ri/web/test/RenderResponse_correct
M jsf-ri/web/test/TestRenderResponsePhase.jsp
- new test content
SECTION: API Diffs
Index: jsf-api/doc/output-label-attrs.xml
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/doc/output-label-attrs.xml,v
retrieving revision 1.5
diff -u -r1.5 output-label-attrs.xml
--- jsf-api/doc/output-label-attrs.xml 8 Nov 2004 19:23:00 -0000 1.5
+++ jsf-api/doc/output-label-attrs.xml 16 Feb 2005 23:00:33 -0000
@@ -35,5 +35,19 @@
<required>false</required>
</attribute-extension>
</attribute>
+ <attribute>
+ <description>
+ Flag indicating that characters that are sensitive
+ in HTML and XML markup must be escaped. This flag
+ is set to "true" by default.
+ </description>
+ <display-name>Escape Characters</display-name>
+ <icon></icon>
+ <attribute-name>escape</attribute-name>
+ <attribute-class>boolean</attribute-class>
+ <attribute-extension>
+ <default-value>true</default-value>
+ </attribute-extension>
+ </attribute>
</root>
Index: jsf-api/doc/output-label-props.xml
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/doc/output-label-props.xml,v
retrieving revision 1.5
diff -u -r1.5 output-label-props.xml
--- jsf-api/doc/output-label-props.xml 8 Nov 2004 19:23:00 -0000 1.5
+++ jsf-api/doc/output-label-props.xml 16 Feb 2005 23:00:33 -0000
@@ -35,5 +35,19 @@
<required>false</required>
</property-extension>
</property>
+ <property>
+ <description>
+ Flag indicating that characters that are sensitive
+ in HTML and XML markup must be escaped. If omitted, this
+ flag is assumed to be "false".
+ </description>
+ <display-name>Escape Characters</display-name>
+ <icon></icon>
+ <property-name>escape</property-name>
+ <property-class>boolean</property-class>
+ <property-extension>
+ <default-value>false</default-value>
+ </property-extension>
+ </property>
</root>
Index: jsf-api/doc/standard-html-renderkit.xml
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/doc/standard-html-renderkit.xml,v
retrieving revision 1.71
diff -u -r1.71 standard-html-renderkit.xml
--- jsf-api/doc/standard-html-renderkit.xml 12 Jan 2005 23:11:58 -0000 1.71
+++ jsf-api/doc/standard-html-renderkit.xml 16 Feb 2005 23:00:54 -0000
@@ -9715,6 +9715,20 @@
<required>false</required>
</property-extension>
</property>
+ <property>
+ <description>
+ Flag indicating that characters that are sensitive
+ in HTML and XML markup must be escaped. This flag
+ is set to "true" by default.
+ </description>
+ <display-name>Escape Characters</display-name>
+ <icon/>
+ <property-name>escape</property-name>
+ <property-class>boolean</property-class>
+ <property-extension>
+ <default-value>true</default-value>
+ </property-extension>
+ </property>
<component-extension>
<base-component-type>javax.faces.Output</base-component-type>
@@ -19671,6 +19685,20 @@
<attribute-class>java.lang.String</attribute-class>
<attribute-extension>
<required>false</required>
+ </attribute-extension>
+ </attribute>
+ <attribute>
+ <description>
+ Flag indicating that characters that are sensitive
+ in HTML and XML markup must be escaped. This flag
+ is set to "true" by default.
+ </description>
+ <display-name>Escape Characters</display-name>
+ <icon/>
+ <attribute-name>escape</attribute-name>
+ <attribute-class>boolean</attribute-class>
+ <attribute-extension>
+ <default-value>true</default-value>
</attribute-extension>
</attribute>
SECTION: RI Diffs
Index: jsf-ri/src/com/sun/faces/renderkit/html_basic/LabelRenderer.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/renderkit/html_basic/LabelRenderer.java,v
retrieving revision 1.33
diff -u -r1.33 LabelRenderer.java
--- jsf-ri/src/com/sun/faces/renderkit/html_basic/LabelRenderer.java 16 Dec 2004 17:56:37 -0000 1.33
+++ jsf-ri/src/com/sun/faces/renderkit/html_basic/LabelRenderer.java 16 Feb 2005 23:00:56 -0000
@@ -130,7 +130,26 @@
log.trace("Value to be rendered " + value);
}
if (value != null && value.length() != 0) {
- writer.write(value);
+ boolean escape = false;
+ Object val = null;
+ if (null != (val = component.getAttributes().get("escape"))) {
+ if (val instanceof Boolean) {
+ escape = ((Boolean) val).booleanValue();
+ } else if (val instanceof String) {
+ try {
+ escape =
+ Boolean.valueOf((String) val).booleanValue();
+ } catch (Throwable e) {
+ }
+ }
+ }
+
+ if (escape) {
+ writer.writeText(value, "value");
+ }
+ else {
+ writer.write(value);
+ }
}
writer.flush();
}
Index: jsf-ri/web/test/RenderResponse_correct
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/web/test/RenderResponse_correct,v
retrieving revision 1.114
diff -u -r1.114 RenderResponse_correct
--- jsf-ri/web/test/RenderResponse_correct 12 Jan 2005 21:37:35 -0000 1.114
+++ jsf-ri/web/test/RenderResponse_correct 16 Feb 2005 23:00:58 -0000
@@ -15,7 +15,7 @@
-<form id="basicForm" method="post" action="/test/faces/TestRenderResponsePhase.jsp;jsessionid=676E0FBF879741B55500B45B856C6622" class="formClass" accept-charset="some-charset" accept="html,wml" enctype="application/x-www-form-urlencoded" target="_self" title="basicForm">
+<form id="basicForm" method="post" action="/test/faces/TestRenderResponsePhase.jsp;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" class="formClass" accept-charset="some-charset" accept="html,wml" enctype="application/x-www-form-urlencoded" target="_self" title="basicForm">
<TABLE BORDER="1">
@@ -130,12 +130,12 @@
- <a id="basicForm:imageLink" href="#" style="someStyle" onclick="clearFormHiddenParams_basicForm('basicForm');document.forms['basicForm']['basicForm:_idcl'].value='basicForm:imageLink'; document.forms['basicForm'].submit(); return false;"><img src="duke.gif;jsessionid=676E0FBF879741B55500B45B856C6622" /></a>
+ <a id="basicForm:imageLink" href="#" style="someStyle" onclick="clearFormHiddenParams_basicForm('basicForm');document.forms['basicForm']['basicForm:_idcl'].value='basicForm:imageLink'; document.forms['basicForm'].submit(); return false;"><img src="duke.gif;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" /></a>
</TD>
<TD>
- <img id="basicForm:graphicImage" src="/test/duke.gif;jsessionid=676E0FBF879741B55500B45B856C6622" style="someStyle" usemap="#map1" ismap="ismap" />
+ <img id="basicForm:graphicImage" src="/test/duke.gif;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" style="someStyle" usemap="#map1" ismap="ismap" />
</TD>
</TR>
@@ -169,7 +169,7 @@
- <a id="basicForm:hrefParamLink" href="#" onclick="clearFormHiddenParams_basicForm('basicForm');document.forms['basicForm']['basicForm:_idcl'].value='basicForm:hrefParamLink';document.forms['basicForm']['name'].value='horwat';document.forms['basicForm']['value'].value='password'; document.forms['basicForm'].target='_top'; document.forms['basicForm'].submit(); return false;"><img src="duke.gif;jsessionid=676E0FBF879741B55500B45B856C6622" /></a>
+ <a id="basicForm:hrefParamLink" href="#" onclick="clearFormHiddenParams_basicForm('basicForm');document.forms['basicForm']['basicForm:_idcl'].value='basicForm:hrefParamLink';document.forms['basicForm']['name'].value='horwat';document.forms['basicForm']['value'].value='password'; document.forms['basicForm'].target='_top'; document.forms['basicForm'].submit(); return false;"><img src="duke.gif;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" /></a>
</TD>
</TR>
@@ -177,7 +177,7 @@
<TD>
- <a id="basicForm:outputLink" href="test.html;jsessionid=676E0FBF879741B55500B45B856C6622" class="hyperlinkClass">output link text</a>
+ <a id="basicForm:outputLink" href="test.html;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" class="hyperlinkClass">output link text</a>
</TD>
@@ -189,12 +189,12 @@
- <a id="basicForm:output_imageLink" href="test.html;jsessionid=676E0FBF879741B55500B45B856C6622" style="position: absolute; left: 96px; top: 168px"><img src="duke.gif;jsessionid=676E0FBF879741B55500B45B856C6622" /></a>
+ <a id="basicForm:output_imageLink" href="test.html;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" style="position: absolute; left: 96px; top: 168px"><img src="duke.gif;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" /></a>
</TD>
<TD>
- <img id="basicForm:output_graphicImage" src="/test/duke.gif;jsessionid=676E0FBF879741B55500B45B856C6622" usemap="#map1" ismap="ismap" />
+ <img id="basicForm:output_graphicImage" src="/test/duke.gif;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" usemap="#map1" ismap="ismap" />
</TD>
</TR>
@@ -202,7 +202,7 @@
<TR>
<TD>
- <a id="basicForm:output_commandLink" href="test.html;jsessionid=676E0FBF879741B55500B45B856C6622" style="position: absolute; left: 96px; top: 168px" class="hyperlinkClass">link text</a>
+ <a id="basicForm:output_commandLink" href="test.html;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" style="position: absolute; left: 96px; top: 168px" class="hyperlinkClass">link text</a>
</TD>
</TR>
@@ -212,13 +212,13 @@
- <a id="basicForm:output_commandParamLink" href="test.html;jsessionid=676E0FBF879741B55500B45B856C6622?name=horwat&value=password" class="hyperlinkClass">link text</a>
+ <a id="basicForm:output_commandParamLink" href="test.html;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C?name=horwat&value=password" class="hyperlinkClass">link text</a>
</TD>
</TR>
<TR>
<TD>
- <a id="basicForm:output_hrefLink" href="test.html;jsessionid=676E0FBF879741B55500B45B856C6622"><img src="duke.gif"></a>
+ <a id="basicForm:output_hrefLink" href="test.html;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C"><img src="duke.gif"></a>
</TD>
</TR>
@@ -228,7 +228,7 @@
- <a id="basicForm:output_hrefParamLink" href="test.html;jsessionid=676E0FBF879741B55500B45B856C6622?name=horwat&value=password"><img src="duke.gif;jsessionid=676E0FBF879741B55500B45B856C6622" /></a>
+ <a id="basicForm:output_hrefParamLink" href="test.html;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C?name=horwat&value=password"><img src="duke.gif;jsessionid=A12DCFE1689DC35610E2C994C3D05E2C" /></a>
</TD>
</TR>
@@ -311,6 +311,19 @@
</TD>
</TR>
+
+ <TR>
+ <TD>
+ <label id="basicForm:labe18" for="basicForm:checkbox8">
+escape<p>this markup</p>
+ <span id="basicForm:outputlabel8">andsometext</span>
+ </label>
+
+ <input id="basicForm:checkbox8" type="checkbox" name="basicForm:checkbox8" class="selectbooleanClass" />
+ </TD>
+
+ </TR>
+
<TR>
<TD>
Index: jsf-ri/web/test/TestRenderResponsePhase.jsp
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/web/test/TestRenderResponsePhase.jsp,v
retrieving revision 1.85
diff -u -r1.85 TestRenderResponsePhase.jsp
--- jsf-ri/web/test/TestRenderResponsePhase.jsp 12 Jan 2005 21:37:35 -0000 1.85
+++ jsf-ri/web/test/TestRenderResponsePhase.jsp 16 Feb 2005 23:00:59 -0000
@@ -303,6 +303,19 @@
</TD>
</TR>
+
+ <TR>
+ <TD>
+ <h:outputLabel id="labe18" for="checkbox8" escape="true" value="escape<p>this markup</p>">
+ <h:outputText id="outputlabel8" value="andsometext"/>
+ </h:outputLabel>
+
+ <h:selectBooleanCheckbox id="checkbox8" rendered="true"
+ styleClass="selectbooleanClass" />
+ </TD>
+
+ </TR>
+
<TR>
<TD>
SECTION: Files changed
M jsf-api/doc/output-label-attrs.xml
M jsf-api/doc/output-label-props.xml
M jsf-ri/src/com/sun/faces/renderkit/html_basic/LabelRenderer.java
M jsf-ri/web/test/RenderResponse_correct
M jsf-ri/web/test/TestRenderResponsePhase.jsp
--
| 27 Business days to PR Spec Freeze
| ed.burns_at_sun.com | {home: 407 294 2468, office: 408 884 9519 OR x31640}
| homepage: | http://javaweb.sfbay.sun.com/~edburns/
| aim: edburns0sunw | iim: ed.burns_at_sun.com