You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/09/02 22:01:02 UTC
svn commit: r1164682 - in /myfaces/core/trunk:
impl/src/test/java/org/apache/myfaces/renderkit/html/
shared/src/main/java/org/apache/myfaces/shared/renderkit/html/
Author: lu4242
Date: Fri Sep 2 20:01:01 2011
New Revision: 1164682
URL: http://svn.apache.org/viewvc?rev=1164682&view=rev
Log:
MYFACES-3298 h:outputText incorectly renders an extra <span>
Modified:
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java
myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java
myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java
myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java?rev=1164682&r1=1164681&r2=1164682&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java Fri Sep 2 20:01:01 2011
@@ -82,17 +82,11 @@ public class HtmlMessageRendererTest ext
//inputText.setParent(form);
inputText.setId("myInputId");
- message.setErrorClass(ERROR_CLASS);
- message.setWarnClass(WARN_CLASS);
- message.setInfoClass(INFO_CLASS);
//message.setParent(form);
form.getChildren().add(inputText);
form.getChildren().add(message);
- facesContext.addMessage(inputText.getClientId(facesContext),
- new FacesMessage("Validation message here."));
-
facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
}
@@ -124,7 +118,12 @@ public class HtmlMessageRendererTest ext
new HtmlRenderedAttr("styleClass", "styleClass", "class=\"infoClass\""),
};
+ facesContext.addMessage(inputText.getClientId(facesContext),
+ new FacesMessage("Validation message here."));
facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ message.setErrorClass(ERROR_CLASS);
+ message.setWarnClass(WARN_CLASS);
+ message.setInfoClass(INFO_CLASS);
message.setStyle("left: 48px; top: 432px; position: absolute");
message.setFor("myInputId");
@@ -136,11 +135,26 @@ public class HtmlMessageRendererTest ext
}
}
+ public void testRenderSpanOnlyWhenNecessary() throws Exception
+ {
+ facesContext.addMessage(inputText.getClientId(), new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ message.setFor("myInputId");
+ message.encodeEnd(facesContext);
+ facesContext.renderResponse();
+ String output = writer.getWriter().toString();
+ System.out.println(output);
+ }
+
public void testHtmlPropertyPassTruNotRendered() throws Exception
{
HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateAttrsNotRenderedForReadOnly();
+ facesContext.addMessage(inputText.getClientId(facesContext),
+ new FacesMessage("Validation message here."));
facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ message.setErrorClass(ERROR_CLASS);
+ message.setWarnClass(WARN_CLASS);
+ message.setInfoClass(INFO_CLASS);
message.setStyle("left: 48px; top: 432px; position: absolute");
message.setFor("myInputId");
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java?rev=1164682&r1=1164681&r2=1164682&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java Fri Sep 2 20:01:01 2011
@@ -68,11 +68,6 @@ public class HtmlMessagesRendererTest ex
messages.getRendererType(),
new HtmlMessagesRenderer());
- messages.setErrorClass(ERROR_CLASS);
- messages.setWarnClass(WARN_CLASS);
- messages.setInfoClass(INFO_CLASS);
- messages.setWarnStyle("warnStyle");
-
facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
}
@@ -107,6 +102,11 @@ public class HtmlMessagesRendererTest ex
facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
facesContext.addMessage("test2", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary2", "detailWarnSummary2"));
+ messages.setErrorClass(ERROR_CLASS);
+ messages.setWarnClass(WARN_CLASS);
+ messages.setInfoClass(INFO_CLASS);
+ messages.setWarnStyle("warnStyle");
+
messages.setLayout("table");
//messages.setStyle("left: 48px; top: 432px; position: absolute");
@@ -118,12 +118,84 @@ public class HtmlMessagesRendererTest ex
}
}
+ public void testRenderSpanOnlyWhenNecessary1() throws Exception
+ {
+ facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ messages.encodeEnd(facesContext);
+ facesContext.renderResponse();
+ String output = writer.getWriter().toString();
+ assertTrue(output.contains("warnSumary"));
+ assertTrue(!output.contains("span"));
+ }
+
+ public void testRenderSpanOnlyWhenNecessary2() throws Exception
+ {
+ facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ messages.setLayout("table");
+ messages.encodeEnd(facesContext);
+ facesContext.renderResponse();
+ String output = writer.getWriter().toString();
+ assertTrue(output.contains("warnSumary"));
+ assertTrue(!output.contains("span"));
+ }
+
+ public void testRenderSpanOnlyWhenNecessary3() throws Exception
+ {
+ facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ messages.setId("msgPanel");
+ messages.encodeEnd(facesContext);
+ facesContext.renderResponse();
+ String output = writer.getWriter().toString();
+ assertTrue(output.contains("warnSumary"));
+ assertTrue(!output.contains("span"));
+ }
+
+ /**
+ * It should output the class on li
+ * @throws Exception
+ */
+ public void testRenderSpanOnlyWhenNecessary4() throws Exception
+ {
+ facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_FATAL, "fatalSumary", "detailFatalSummary"));
+ messages.setId("msgPanel");
+ messages.setFatalClass("fatalClass");
+ messages.encodeEnd(facesContext);
+ facesContext.renderResponse();
+ String output = writer.getWriter().toString();
+ assertTrue(output.contains("fatalSumary"));
+ assertTrue(output.contains("li class=\"fatalClass\""));
+ assertTrue(!output.contains("span"));
+ }
+
+ /**
+ * It should output the class on td
+ * @throws Exception
+ */
+ public void testRenderSpanOnlyWhenNecessary5() throws Exception
+ {
+ facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_FATAL, "fatalSumary", "detailFatalSummary"));
+ messages.setId("msgPanel");
+ messages.setLayout("table");
+ messages.setFatalClass("fatalClass");
+ messages.encodeEnd(facesContext);
+ facesContext.renderResponse();
+ String output = writer.getWriter().toString();
+ assertTrue(output.contains("fatalSumary"));
+ assertTrue(output.contains("td class=\"fatalClass\""));
+ assertTrue(!output.contains("span"));
+ }
+
public void testHtmlPropertyPassTruNotRendered() throws Exception
{
HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateAttrsNotRenderedForReadOnly();
facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
+ messages.setErrorClass(ERROR_CLASS);
+ messages.setWarnClass(WARN_CLASS);
+ messages.setInfoClass(INFO_CLASS);
+ messages.setWarnStyle("warnStyle");
+
messages.setLayout("table");
messages.setStyle("left: 48px; top: 432px; position: absolute");
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java?rev=1164682&r1=1164681&r2=1164682&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTextRendererTest.java Fri Sep 2 20:01:01 2011
@@ -107,6 +107,23 @@ public class HtmlTextRendererTest extend
assertEquals("<span class=\"myStyleClass\">Output</span>", output);
assertNotSame("Output", output);
}
+
+ /**
+ * Don't add span over escape
+ * @throws IOException
+ */
+ public void testEscapeNoSpan() throws IOException
+ {
+ outputText.setValue("Output");
+ outputText.setEscape(true);
+
+ outputText.encodeEnd(facesContext);
+ facesContext.renderResponse();
+
+ String output = writer.getWriter().toString();
+
+ assertEquals("Output", output);
+ }
public void testHtmlPropertyPassTru() throws Exception
{
Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java?rev=1164682&r1=1164681&r2=1164682&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java Fri Sep 2 20:01:01 2011
@@ -164,11 +164,31 @@ public abstract class HtmlMessageRendere
}
protected void renderSingleFacesMessage(FacesContext facesContext,
+ UIComponent message,
+ FacesMessage facesMessage,
+ String messageClientId,
+ boolean renderId,
+ boolean renderStyleAndStyleClass)
+ throws IOException
+ {
+ Map<String, List<ClientBehavior>> behaviors = null;
+ if (message instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+ {
+ behaviors = ((ClientBehaviorHolder) message).getClientBehaviors();
+ }
+ boolean wrapSpan = (message.getId() != null && !message.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+ || (behaviors != null && !behaviors.isEmpty());
+
+ renderSingleFacesMessage(facesContext, message, facesMessage, messageClientId, renderId, renderStyleAndStyleClass, wrapSpan);
+ }
+
+ protected void renderSingleFacesMessage(FacesContext facesContext,
UIComponent message,
FacesMessage facesMessage,
String messageClientId,
boolean renderId,
- boolean renderStyleAndStyleClass)
+ boolean renderStyleAndStyleClass,
+ boolean wrapSpan)
throws IOException
{
// determine style and style class
@@ -197,8 +217,7 @@ public abstract class HtmlMessageRendere
behaviors = ((ClientBehaviorHolder) message).getClientBehaviors();
}
- if ( (message.getId() != null && !message.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
- || (behaviors != null && !behaviors.isEmpty()) )
+ if ( wrapSpan )
{
span = true;
Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java?rev=1164682&r1=1164681&r2=1164682&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java Fri Sep 2 20:01:01 2011
@@ -186,7 +186,7 @@ public abstract class HtmlMessagesRender
renderSingleFacesMessage(facesContext,
messages,
facesMessage,
- messagesIterator.getClientId(),false,false);
+ messagesIterator.getClientId(),false,false,false);
writer.endElement(HTML.LI_ELEM);
}
@@ -239,7 +239,7 @@ public abstract class HtmlMessagesRender
renderSingleFacesMessage(facesContext,
messages,
facesMessage,
- messagesIterator.getClientId(),false,false);
+ messagesIterator.getClientId(),false,false,false);
writer.endElement(HTML.TD_ELEM);
writer.endElement(HTML.TR_ELEM);
Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java?rev=1164682&r1=1164681&r2=1164682&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java Fri Sep 2 20:01:01 2011
@@ -109,8 +109,7 @@ public class HtmlTextRendererBase
if (isCommonPropertiesOptimizationEnabled(facesContext))
{
long commonPropertiesMarked = CommonPropertyUtils.getCommonPropertiesMarked(component);
-
- if (commonPropertiesMarked > 0)
+ if ( (commonPropertiesMarked & ~(CommonPropertyConstants.ESCAPE_PROP)) > 0)
{
span = true;
writer.startElement(HTML.SPAN_ELEM, component);