使用Sitebricks反序列化post / get params

时间:2012-09-24 21:08:29

标签: sitebricks

在sitebricks中,我可以轻松地在Sitebricks @Service方法中使用json格式的params反序列化类:

request.read(Person.class).as(Json.class); 

但是如何从get / post params反序列化一个类?

我知道Request对象可以访问参数(request.params()),但这需要更多的努力。

2 个答案:

答案 0 :(得分:3)

在你的模块中声明你的处理程序类:

at("/test").serve(TestPage.class); 

然后使用成员声明您的TestPage并关联与您的get / post params相对应的getter / setter

public class TestPage {

    private String param;

    @Get
    public Reply<?> get() {
        // request get param "param" is already mapped in param
    }

    @Post
    public Reply<?> post() {
        // request post param "param" is already mapped in param
    }


    public void setParam(String param) {
        this.param = param;         
    }

    public String getParam() {
        return this.param;
    }        

}

然后使用get或post参数“param”调用你的url / test。

查看http://sitebricks.org/#requestandreply

希望有所帮助。

RGDS

答案 1 :(得分:3)

如果我想反序列化的对象不是服务本身,那么我必须注入Json来进行反序列化。

public class TestPage {
   @Inject Json json;

   @Post
   public void post(Request request) {
     String data = request.param("data");
     Person p = json.in(new ByteArrayInputStream(data.getBytes()), Person.class);

     ...
   }
}