String per-6ren">
gpt4 book ai didi

java - 使用 @Form-RestEasy 参数绑定(bind)到 VO - JAX-Rs

转载 作者:行者123 更新时间:2023-11-30 04:19:29 25 4
gpt4 key购买 nike

我有一些变量作为@PathParam。我想将它们放入一个 Bean 中,并将它们全部接受为一个。

public void show( @PathParam("personId"> String personId, 
@PathParam("addressId") String addressId
@Context HttpRequest request) {
// Code
}

现在我想将所有参数放入带有 @Form 参数的 Bean/VO 中。我的类(class):

class RData {
private String personId;
private String addressId;
private InputStream requestBody;

@PathParam("personId")
public void setPersonId(String personId) {
this.personId = personId;
}

@PathParam("addressId")
public void setAddressId(String addressId) {
this.addressId = addressId;
}

// NOW HERE I NEED TO BIND HttpRequest Context object to request object in my VO.
// That is @Context param in the original method.
}

我的方法将更改为:

public void show( @Form RData rData) {
// Code
}

上面我的 VO 类包含我需要做的事情。所以我需要将 @Context HttpRequest request 映射到我的 VO 中的 HttpRequest 实例变量。

如何做到这一点?因为它没有像 @PathParam 这样的属性名称。

最佳答案

您可以将 @Context 值注入(inject)到属性中,就像表单、路径和 header 参数一样。

示例资源方法:

@POST
@Path("/test/{personId}/{addressId}")
public void createUser(@Form MyForm form)
{
System.out.println(form.toString());
}

示例表单类:

public class MyForm {

private String personId;
private String addressId;
private HttpRequest request;

public MyForm() {

}

@PathParam("personId")
public void setPersonId(String personId) {
this.personId = personId;
}

@PathParam("addressId")
public void setAddressId(String addressId) {
this.addressId = addressId;
}

public HttpRequest getRequest() {
return request;
}

@Context
public void setRequest(HttpRequest request) {
this.request = request;
}

@Override
public String toString() {
return String.format("MyForm: [personId: '%s', addressId: '%s', request: '%s']",
this.personId, this.addressId, this.request);
}
}

网址:

http://localhost:7016/v1/test/1/1

输出:

MyForm: [personId: '1', addressId: '1', request: 'org.jboss.resteasy.plugins.server.servlet.HttpServletInputMessage@15d694da']

关于java - 使用 @Form-RestEasy 参数绑定(bind)到 VO - JAX-Rs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com