On Tue, Oct 18, 2011 at 5:50 AM, Willis C White <[email protected]> wrote: > > I am still getting the same error. > > I used the code you sent me. > function sendAndGetInfo(){ > try{ > var person = new Object(); > person.Firstname = document.getElementById("Firstname").value; > person.Lastname = document.getElementById("Lastname").value; > person.Description = > document.getElementById("Description").value; > person.Latitude = document.getElementById("Latitude").value; > person.Longatude = document.getElementById("Longatude").value; > json_data = JSON.stringify(person); > > console.log(person); > > HelloWorldService.setPersonInfo(person, handleInfoResponse); > > }catch(e){ > console.dir(e); > } > } > > function handleInfoResponse(result) { > console.log(result); > } > > > this is what firebug says is being posting > {"id": 4, "method": "Service.setPersonInfo", "params": [{"Firstname": > "willis", "Lastname": "white", "Description": "sdfsdfds", "Latitude": "23", > "Longatude": "2455"}]} > > > > this is the error I am getting > > {"error":{"msg":"argument type > mismatch","trace":"java.lang.IllegalArgumentException: argument type > mismatch\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method)\r\n\tat > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n\tat > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)\r\n\tat > java.lang.reflect.Method.invoke(Method.java:599)\r\n\tat > org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:156)\r\n\tat > > org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:261)\r\n\tat > > org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:164)\r\n\tat > > org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:97)\r\n\tat > javax.servlet.http.HttpServlet.service(HttpServlet.java:831)\r\n\tat > org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:107)\r\n\tat > > org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94)\r\n\tat > > com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)\r\n\tat > > com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)\r\n\tat > > com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)\r\n\tat > > com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:852)\r\n\tat > > com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:917)\r\n\tat > > com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:924) > > > > > this is the beginning of the data class. I have tried this with and without > constructors and with and with out default values for the private members. > > package TOdata; > > public class person { > private String FirstName = ""; > private String LastName = ""; > private String Longatude = ""; > private String Latitude = ""; > private Integer ID = 0; > private String Description = ""; > > > public person() { > super(); > } > > public person(String firstName, String lastName, String longatude, > String latitude, String description) { > super(); > FirstName = firstName; > LastName = lastName; > Longatude = longatude; > Latitude = latitude; > Description = description; > } > > .... > > > > This is my interface class. > > package helloworldjsonrpc; > > import TOdata.person; > > public interface HelloWorldService { > String getGreetings(String name); > > person setPersonInfo(person info); > } > Willis C. White III > Software Engineer, CIO Lab > IBM Certified IT Specialist > Code Warrior > EM:[email protected] > NM:Willis White/Poughkeepsie/IBM > > > > > From: Luciano Resende <[email protected]> > To: [email protected] > Date: 10/18/2011 01:13 AM > Subject: Re: can HelloWorldJSONRPC be modified to send objects? > ________________________________ > > > On Mon, Oct 17, 2011 at 10:19 AM, Willis C White <[email protected]> wrote: > > function sendAndGetInfo(){ > > try{ > > var info = new Object(); > > info.Firstname = document.getElementById("Firstname").value; > > info.Lastname = document.getElementById("Lastname").value; > > info.Description = > > document.getElementById("Description").value; > > info.Latitude = document.getElementById("Latitude").value; > > info.Longatude = document.getElementById("Longatude").value; > > json_data = JSON.stringify(info); > > > > console.log(json_data); > > > > HelloWorldService.setPersonInfo(json_data, > > handleInfoResponse); > > > > }catch(e){ > > console.dir(e); > > } > > } > > You could try : > > function sendAndGetInfo(){ > try{ > var person = new Object(); > person.firstName = document.getElementById("Firstname").value; > person.lastName = document.getElementById("Lastname").value; > person.description = > document.getElementById("Description").value; > person.latitude = document.getElementById("Latitude").value; > person.longitude = document.getElementById("Longatude").value; > > service.someOperation(person, handleInfoResponse); > > }catch(e){ > console.dir(e); > } > } > > > This should work, assuming your service have a "someOperation" > method that accepts a "Person" parameter that contains setters for > firstName, lastName, description, latitude and longitude. > > > --
Two things : a) Case of the properties person.firstName versus person.Firstname, it should be firstName b) Your Person class should be a valid bean : default constructors, getters/setters for every property -- Luciano Resende http://people.apache.org/~lresende http://twitter.com/lresende1975 http://lresende.blogspot.com/
