![]() |
HTTP Service
Using this feature any Flex module could get the data from JSF Managed Beans or just call any object method which return this data without having to know about JSF. In order to implement interoperability between Flex and JSF fiji:endPoint component provides access to the properties or methods of any object via a URL: for Flex module the it is just a URL which it uses to send the request to the server. Next simple example shows basics of httpService feature usage. |
HTTPService Usage Example
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:fiji="http://exadel.com/fiji"> <ui:composition> <h:form> <fiji:swf src="resource:///com/exadel/fiji/helloWorld.swf" bgcolor="#FFFFFF" width="350" height="200"> <f:param name="text" value="Hello Fiji World"/> <fiji:endpoint name="endpoint" decoder="com.exadel.fiji.demo.simple.HelloDecoder" encoder="com.exadel.fiji.demo.simple.HelloEncoder" service="#{bean.endpointService}"/> </fiji:swf> </h:form> </ui:composition> </html>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Style> .text { font-size:20px; } </mx:Style> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.http.HTTPService; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import com.exadel.fiji.services.FijiHttpService; /* Constants */ private static const XMLROOT_OPEN:String = "<root xmlns:FIJI='http://www.exadel.com/fiji'>"; private static const XMLROOT_CLOSE:String = "</root>"; private var userRequest:HTTPService private function send_data():void { userRequest = new HTTPService(); userRequest.url = Application.application.parameters.endpoint; userRequest.addEventListener("result", httpResult); userRequest.addEventListener("fault", httpFault); var param:Object = {}; param["hello"] = username.text; userRequest.send(param); } public function httpResult(event:ResultEvent):void { if (event.result) { hello.text = event.result.value; } } public function httpFault(event:FaultEvent):void { var faultstring:String = event.fault.faultString; Alert.show(faultstring); } ]]> </mx:Script> <mx:Form x="22" y="10" width="280"> <mx:Label id="hello" styleName="text" text="{Application.application.parameters.text}" /> <mx:HBox> <mx:Label text="Username"/> <mx:TextInput id="username"/> </mx:HBox> <mx:Button label="Submit" click="send_data()"/> </mx:Form> </mx:Application>
/*
* Copyright (c) 2008, Exadel, Inc * All rights reserved. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package com.exadel.fiji.demo.simple; import javax.faces.context.FacesContext; public class Bean { public Object endpointService(Object parameter){ if(null != parameter){ return "What's up, "+parameter+"?"; } else { return "What's up, unknown?"; } } }
/*
* Copyright (c) 2008, Exadel, Inc * All rights reserved. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package com.exadel.fiji.demo.simple; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import com.exadel.fiji.io.FlexEncoder; public class HelloEncoder implements FlexEncoder { private static final String VALUE = "value"; public void encodeObject(FacesContext context, UIComponent component, Object object) throws IOException { ResponseWriter responseWriter = context.getResponseWriter(); responseWriter.startElement(VALUE, component); responseWriter.writeText(object, null); responseWriter.endElement(VALUE); } }
/*
* Copyright (c) 2008, Exadel, Inc * All rights reserved. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package com.exadel.fiji.demo.simple; import java.io.Serializable; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import com.exadel.fiji.io.FlexDecoder; public class HelloDecoder implements FlexDecoder , Serializable { private static final String ENDPOINT_PARAM = "hello"; public Object decodeRequest(FacesContext context, UIComponent component) { return context.getExternalContext().getRequestParameterMap().get(ENDPOINT_PARAM); } }
|
|
So in this example Flex module sends request with a param hello which encoded
with custom HelloEncoder. Then endpointService method generates new
String to be represented with the Flex module using this parameter.
|


