You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/06/27 18:54:19 UTC
svn commit: r672321 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/
main/java/org/apache/tapestry5/internal/services/
test/java/org/apache/tapestry5/internal/services/
Author: hlship
Date: Fri Jun 27 09:54:19 2008
New Revision: 672321
URL: http://svn.apache.org/viewvc?rev=672321&view=rev
Log:
TAPESTRY-2483: The '%' symbol passed to RenderSupport.addScript() is treated as a formatting directive, causing errors
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java?rev=672321&r1=672320&r2=672321&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java Fri Jun 27 09:54:19 2008
@@ -15,14 +15,17 @@
package org.apache.tapestry5;
import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.services.AssetSource;
import org.apache.tapestry5.json.JSONArray;
import org.apache.tapestry5.json.JSONObject;
+import org.apache.tapestry5.services.AssetSource;
/**
* Provides support to all components that render. This is primarily about generating unique client-side ids (very
* important for JavaScript generation) as well as accumulating JavaScript to be sent to the client. PageRenderSupport
* also allows for the incremental addition of stylesheets.
+ * <p/>
+ * When rendering, a <script> block will be added to the bottom of the page (just before the </body> tag).
+ * The scripting statements added to this block will be executed, on the client, only once the page has fully loaded.
*/
public interface RenderSupport
{
@@ -74,8 +77,15 @@
void addStylesheetLink(Asset stylesheet, String media);
/**
- * Adds a script statement to the page's script block (which appears at the end of the page, just before the
- * </body> tag).
+ * Adds a script statement to the page's script block. A newline will be added after the script statement.
+ *
+ * @param script text to be added to the script block
+ */
+ void addScript(String script);
+
+ /**
+ * Adds a script statement to the page's script block. The parameters are passed to {@link String#format(String,
+ * Object[])} before being added to the script block. A newline will be added after the formatted statement.
*
* @param format base string format, to be passed through String.format
* @param arguments additional arguments formatted to form the final script
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java?rev=672321&r1=672320&r2=672321&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java Fri Jun 27 09:54:19 2008
@@ -120,6 +120,11 @@
linker.addScriptLink(asset.toClientURL());
}
+ public void addScript(String script)
+ {
+ linker.addScript(script);
+ }
+
public void addScript(String format, Object... arguments)
{
notNull(format, "format");
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java?rev=672321&r1=672320&r2=672321&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java Fri Jun 27 09:54:19 2008
@@ -95,6 +95,26 @@
verify();
}
+ // TAPESTRY-2483
+
+ @Test
+ public void add_script_no_formatting()
+ {
+ DocumentLinker linker = mockDocumentLinker();
+
+ String script = "foo('%');";
+
+ linker.addScript(script);
+
+ replay();
+
+ RenderSupport support = new RenderSupportImpl(linker, null, null);
+
+ support.addScript(script);
+
+ verify();
+ }
+
@Test
public void add_classpath_script_link()
{