You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Paul Stanton (JIRA)" <ji...@apache.org> on 2012/10/30 05:06:12 UTC

[jira] [Comment Edited] (TAP5-2021) create compatible client side method of encoding context parameters

    [ https://issues.apache.org/jira/browse/TAP5-2021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13485285#comment-13485285 ] 

Paul Stanton edited comment on TAP5-2021 at 10/30/12 4:04 AM:
--------------------------------------------------------------

here is a javascript version of URLEncoderImpl.encode

	/**
	 * see org.apache.tapestry5.internal.services.URLEncoderImpl.encode(String)
	 * correct as at tapestry 5.3.5
	 */
	function tapestryUrlEncodeParameter(input)
	{
		var safe = "abcdefghijklmnopqrstuvwxyz"
				+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
				+ "01234567890-_.:";
		
		if (input === null)
			return "$N";

		if (input === "")
			return "$B";

		var length = input.length;
		var output = "";
		
		for (var i = 0; i < length; i++)
		{
			var ch = input.charAt(i);

			if (ch == '$')
			{
				output.append("$$");
				continue;
			}

			if (safe.indexOf(ch) != -1)
			{
				output += ch;
				continue;
			}

			var chHex = ch.charCodeAt(0).toString(16);
			while (chHex.length < 4)
				chHex = "0" + chHex;
			output += "$" + chHex;
		}
		
		return output;
	}
                
      was (Author: paul.stanton):
    here is a javascript version of URLEncoderImpl.encode

	/**
	 * see org.apache.tapestry5.internal.services.URLEncoderImpl.encode(String)
	 * correct as at tapestry 5.3.5
	 */
	function tapestryUrlEncodeParameter(input)
	{
		var safe = "abcdefghijklmnopqrstuvwxyz"
				+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
				+ "01234567890-_.:";
		
		if (input === null)
			return "$N";

		if (input === "")
			return "$B";

		var length = input.length;
		var output = "";
		
		for (var i = 0; i < length; i++)
		{
			var ch = input.charAt(i);

			if (ch == '$')
			{
				output.append("$$");
				continue;
			}

			if (safe.indexOf(ch) != -1)
			{
				output += ch;
				continue;
			}

			var chAsInt = ch.charCodeAt(0);
			var chAsHexInt = parseInt(chAsInt.toString(16));
			output += "$" + chAsHexInt.toPaddedString(4);
		}
		
		return output;
	}
                  
> create compatible client side method of encoding context parameters
> -------------------------------------------------------------------
>
>                 Key: TAP5-2021
>                 URL: https://issues.apache.org/jira/browse/TAP5-2021
>             Project: Tapestry 5
>          Issue Type: Improvement
>          Components: tapestry-core
>    Affects Versions: 5.3
>            Reporter: Paul Stanton
>              Labels: urlencoder
>
> Currently there is no (provided) way to replicate the tapestry propriety URL encoding.
> See org.apache.tapestry5.internal.services.URLEncoderImpl.encode(String)
> This can be limiting for advanced users wiring up custom components which may create requests via javascript.
> I personally have come up against this a number of times.
> I propose that tapestry.js include a function which does the equivalent of URLEncoder.encode, or even better, ComponentResources.createEventLink etc.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira