我有一个问题在接口上解析类级别的@Path注释。我将此接口传递给Jersey代理客户端中的WebResourceFactory,但它立即失败并出现IllegalStateException。
界面定义:
@Path("{entity}")
public interface EntityResource {
@GET
@Produces("*/xml")
Entity get(@PathParam("view") EntityType view);
}
我得到的例外:
Exception in thread "main" java.lang.IllegalStateException: The template variable 'entity' has no value
at org.glassfish.jersey.client.JerseyWebTarget.getUri(JerseyWebTarget.java:135)
at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:215)
at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:60)
at org.glassfish.jersey.client.proxy.WebResourceFactory.invoke(WebResourceFactory.java:322)
有关如何解决"实体的任何建议"模板变量?
答案 0 :(得分:0)
在对jersey-proxy-client源代码进行一些调查之后,我发现所有模板变量都是通过方法声明上的注释来解析的。 Apache CXF如何生成我的接口存在问题。我在@PathParam和@Path之间不匹配。 @Path使用“entity”,我的@PathParam使用“view”。它们都需要相同才能使模板变量正确解析。
答案 1 :(得分:0)
我遇到了类似的问题,我无需匹配 @Path
和 @PathParam
值就能够解决它。我使用了 @RequestTemplate
,它实际上将 entity
转换为 view
:
@APIGatewayIntegration(
requestTemplates =
@RequestTemplate(
mimeType = MediaType.APPLICATION_JSON,
template = "{\"entity\": \"$input.params('view')\"}"),
type = "aws",
contentHandling = "CONVERT_TO_TEXT",
httpMethod = HTTP_POST_METHOD,
passthroughBehavior = "WHEN_NO_TEMPLATES"
)
我在 AWS API GW 中使用我的接口。希望这会有所帮助。