I still have the problem. Fix one thing

these two line where wrong

info.Firstname = document.getElementById("Firstname").value;
info.Lastname = document.getElementById("Lastname").value;

should be FirstName and LastName (not Firstname and Lastname)

are the constructors I have in my earlier post, wrong?


Willis C. White III
Software Engineer, CIO Lab
IBM Certified IT Specialist 
Code Warrior 
Home office 845-331-5134, Cell 845-853-3827 
"This quote was intentionally left blank " 

EM:[email protected]
NM:Willis White/Poughkeepsie/IBM





From:   Luciano Resende <[email protected]>
To:     [email protected]
Date:   10/18/2011 01:34 PM
Subject:        Re: can HelloWorldJSONRPC be modified to send objects?



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/


<<image/gif>>

<<image/gif>>

Reply via email to