gpt4 book ai didi

java - 泽西 (javax) REST MissingAnnotationException

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:50 27 4
gpt4 key购买 nike

我有一个包含多个字段和文件上传的 HTML 表单。

在 Java 方面,我收到了如下表单,并且有效:

@Component("org.phenotips.metabolites.FileUploaderResource")
@Path("/metabolites")

public class FileUploaderResource extends XWikiResource

{
@GET
@Path("/test")
public Response test() {
String response = "<html>Successful</html>";
return Response.ok(response).build();
}

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("filepath") InputStream uploadedInputStream
)
{
try {
String errorMessage = "This is an error response";
URI redirect = new URI("http://localhost:8080/");
return Response.temporaryRedirect(redirect).header("error_msg", errorMessage).build();
} catch (Exception ex) {
return Response.serverError().build();
}
}
}

但这不是我需要的,例如 uploadedInputStream 包含的内容(示例)

-----------------------------184640265716083967621914753489
Content-Disposition: form-data; name="id"

0000002
-----------------------------184640265716083967621914753489
Content-Disposition: form-data; name="column_order"

yes, no,
-----------------------------184640265716083967621914753489
Content-Disposition: form-data; name="date"

05/02/2015
-----------------------------184640265716083967621914753489
Content-Disposition: form-data; name="filepath"; filename="phenotips_2014-08-28_10-35.csv"
Content-Type: text/csv

"History (code)","History","History (code and name)","observed"
"","","","HP:0001622"
-----------------------------184640265716083967621914753489--

如您所见,除了文件之外,表单还有更多的文件。但是如果我将 uploadFile 的签名更改为

public Response uploadFile(
@FormDataParam("date") String date,
@FormDataParam("filepath") InputStream uploadedInputStream
)

我收到以下错误:

根资源类 org.phenotips.metabolites.FileUploaderResource 不是有效的根资源类:该实体已被读取。 1.参数需要以下注解之一:[接口(interface)javax.ws.rs.core.Context,接口(interface)javax.ws.rs.HeaderParam,接口(interface)javax.ws.rs.MatrixParam,接口(interface)javax.ws.rs.QueryParam,接口(interface) javax.ws.rs.PathParam,接口(interface) javax.ws.rs.CookieParam]

更改为 @FormParam("date") 也无济于事,因为它最终没有被发现并返回一个 NullPointerException

编辑。我喜欢下面答案中提出的猜测。我确实决定不直接提及某些内容(尽管您可以在代码中看到它)——我使用的是自定义框架 XWiki。完全有可能读完正文,然后就没有什么可读的了。

最佳答案

这不是答案:只是看看 OP 是否可能没有向我们展示或告诉我们

我用 Postman 测试过这个,我没问题。也许这是您没有向我们展示的其他内容。

@Path("/multipart")
public class MutlipartResource {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response postMultiPart(@FormDataParam("date") String date,
@FormDataParam("filepath") InputStream stream)
throws Exception {
ImageIO.read(stream);
return Response.ok(date).build();
}
}

enter image description here


这是我对错误的解释,虽然我可能是错的,但这只是一个猜测。似乎在到达方法之前有什么东西正在读取正文部分,所以没有什么可读的了。在这种情况下,错误可能是说由于它不是可读部分,因此不应将其定义为多部分,而应定义为其他形式,并且由于您只能有一个实体主体,即 date不能是主体,而必须是查询参数、路径参数等(不是实体主体的东西)。同样,这只是一个猜测。但也许您可以调查一下。

关于java - 泽西 (javax) REST MissingAnnotationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28512075/

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