Author: mrdon Date: Sun Mar 20 15:13:18 2005 New Revision: 158371 URL: http://svn.apache.org/viewcvs?view=rev&rev=158371 Log: * Added continuation id in json return * Modified remote-example to have client method call modify server values * Refactored client library into object
Modified: struts/flow/trunk/src/java/org/apache/struts/flow/FlowAction.java struts/flow/trunk/src/remote-example/WEB-INF/numberguess.js struts/flow/trunk/src/remote-example/clientFlow.js struts/flow/trunk/src/remote-example/guess.jsp Modified: struts/flow/trunk/src/java/org/apache/struts/flow/FlowAction.java URL: http://svn.apache.org/viewcvs/struts/flow/trunk/src/java/org/apache/struts/flow/FlowAction.java?view=diff&r1=158370&r2=158371 ============================================================================== --- struts/flow/trunk/src/java/org/apache/struts/flow/FlowAction.java (original) +++ struts/flow/trunk/src/java/org/apache/struts/flow/FlowAction.java Sun Mar 20 15:13:18 2005 @@ -187,6 +187,7 @@ } if (isFlowCall) { + atts.put("contid", contid); String json = new JSONSerializer().serialize(atts); response.getWriter().write(json); response.getWriter().flush(); Modified: struts/flow/trunk/src/remote-example/WEB-INF/numberguess.js URL: http://svn.apache.org/viewcvs/struts/flow/trunk/src/remote-example/WEB-INF/numberguess.js?view=diff&r1=158370&r2=158371 ============================================================================== --- struts/flow/trunk/src/remote-example/WEB-INF/numberguess.js (original) +++ struts/flow/trunk/src/remote-example/WEB-INF/numberguess.js Sun Mar 20 15:13:18 2005 @@ -1,10 +1,11 @@ var random; +var guesses; function main() { random = Math.round( Math.random() * 9 ) + 1; var hint = "No hint for you!" - var guesses = 0; + guesses = 0; while (true) { @@ -39,5 +40,6 @@ } function cheat() { - return {"secret":random}; + guesses += 5; + return {"secret":random, "guesses":guesses}; } Modified: struts/flow/trunk/src/remote-example/clientFlow.js URL: http://svn.apache.org/viewcvs/struts/flow/trunk/src/remote-example/clientFlow.js?view=diff&r1=158370&r2=158371 ============================================================================== --- struts/flow/trunk/src/remote-example/clientFlow.js (original) +++ struts/flow/trunk/src/remote-example/clientFlow.js Sun Mar 20 15:13:18 2005 @@ -1,3 +1,24 @@ +function ClientFlow(url) { + this.method = "POST"; + this.urlBase = url; +} + +ClientFlow.prototype.call = function(func, contid, data) { + if (!data) data = []; + url = this.urlBase + "?contid="+contid+"&FlowCall="+func; + req = this.xmlHTTPRequestObject(); + if (req) { + req.open (this.method, url, false); + json = this.stringify(data); + //alert("sending:"+json); + req.send (json); + //alert("response:"+req.responseText); + eval("ret = "+req.responseText); + return ret; + } + return false; +} + /* XMLHTTP functions 0.2 */ /* For all the Railsers out there */ @@ -8,38 +29,7 @@ /* The licence is simple, use however you want, but leave attribution to any authors listed above, including yourself :-) */ - -function flowCall(url, func, contid, data) { - method = "POST"; - if (!data) data = null; - url = url + "?contid="+contid+"&FlowCall="+func; - req = xmlHTTPRequestObject(); - if (req) { - req.open (method, url, false); - json = stringify(data); - //alert("sending:"+json); - req.send (json); - //alert("response:"+req.responseText); - eval("ret = "+req.responseText); - return ret; - } - return false; -} - -/*function xmlHTTPAsyncRequest(url, method, data, callbackr) { - if (!method) method = "GET"; - if (!data) data = null; - req = xmlHTTPRequestObject(); - if (req) { - eval ('req.onreadystatechange = ' + callbackr + ';'); - req.open (method, url, true); - req.send (data); - return req - } -} -*/ - -function xmlHTTPRequestObject() { +ClientFlow.prototype.xmlHTTPRequestObject = function() { var obj = false; var objectIDs = new Array( "Microsoft.XMLHTTP", @@ -62,11 +52,11 @@ return obj; } -function isXMLHTTPRequestSupported() { +ClientFlow.prototype.isXMLHTTPRequestSupported = function() { return xmlHTTPRequestObject != null; } -function stringify(arg) { +ClientFlow.prototype.stringify = function(arg) { var i, o, u, v; switch (typeof arg) { Modified: struts/flow/trunk/src/remote-example/guess.jsp URL: http://svn.apache.org/viewcvs/struts/flow/trunk/src/remote-example/guess.jsp?view=diff&r1=158370&r2=158371 ============================================================================== --- struts/flow/trunk/src/remote-example/guess.jsp (original) +++ struts/flow/trunk/src/remote-example/guess.jsp Sun Mar 20 15:13:18 2005 @@ -4,16 +4,20 @@ <title>Struts Flow number guessing game</title> <script type="text/javascript"> <!-- -var contid = "<%=request.getAttribute("contid")%>"; +function init() { + this.contid = "<%=request.getAttribute("contid")%>"; + this.client = new ClientFlow("guess.do"); +} function cheat() { - result = flowCall("guess.do", "cheat", contid, []); - alert("The secret number is "+result.secret); + result = client.call("cheat", contid); + alert("The secret number is "+result.secret+". After applying a penalty, you have guessed "+result.guesses+" times"); + contid = result.contid; } --> </script> <script type="text/javascript" src="clientFlow.js" /> </head> -<body> +<body onload="init()"> <h1>Guess the Number Between 1 and 10</h1> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]