Registration_BE包含许多变量,如myvariable
。我想在这里得到reg_be
所有变量。像这样我必须传递我的对象。
的servlet:
http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be="+reg_be
web服务:
public String getText(@PathParam("reg_be") Registration_BE reg_be ) {
System.out.println("websevice:" +reg_be.myvariable);
return reg_be.myvariable;
}
以上代码抛出此异常:
com.sun.jersey.spi.inject.Errors$ErrorMessagesException.....
我该如何解决这个问题?
答案 0 :(得分:4)
您可以使用三种典型选项。
将对象变量传递给请求
如果您没有大量变量,或者只需要填充Registration_BE中的一部分字段,这将非常有用。
如果要将变量作为典型的POST传递给请求,则需要先进行一些处理以构造复杂的Registration_BE
对象:
public String getText(@RequestParam("reg_be.myvariable") String myvariable) {
Registration_BE reg_be = new Registration_BE(myvariable);
System.out.println("websevice:" +reg_be.myvariable);
return reg_be.myvariable;
}
你可以用:
来调用它http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be.myvariable=myvalue
或者通过传入一组变量:
public String getText(@RequestParam("reg_be.myvariable") String[] myvariables) {
Registration_BE reg_be = new Registration_BE(myvariables);
System.out.println("websevice:" +reg_be.myvariable);
return reg_be.myvariable;
}
你可以用:
来调用它http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be.myvariable=myvalue1®_be.myvariable=myvalue2
使用通用数据交换格式
第二个选项是将注册对象作为JSON(或XML)传递。为此,您需要enable the Jackson message convertor并确保Jackson library在您的类路径中:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven />
</beans>
您的方法不会改变:
public String getText(@RequestParam("reg_be") Registration_BE reg_be ) {
System.out.println("websevice:" +reg_be.myvariable);
return reg_be.myvariable;
}
现在你可以用:
来调用它http://192.168.1.1:8084/UnionClubWS/webresources/customerregistration/?reg_be={"myvariable":"myvalue"}
自定义邮件转换器
您的第三个也是最复杂的选项是创建自己的消息转换器。这将为您提供最大的灵活性(您的请求可以采用您喜欢的任何形式),但会涉及更多的样板开销以使其工作。
除非您对如何构建请求数据包有非常具体的要求,否则我建议您选择上述选项之一。
答案 1 :(得分:2)
如果要将对象paas为path-param或query-param,则需要将其作为字符串传递。为此,将对象转换为JSON字符串并将其作为查询参数传递。对于此here是使用JSON的更好方法。
另一个更好的选择是提出您的请求POST
。并将您的对象提交到POST
方法。请阅读@FormParam
的{{3}}。