我有一个类作为子资源,运行时,除了eclipse显示红色下划线外,所有东西都正常工作,没有任何错误,我如何才能使eclipse“知道”parent @Path是它的一部分。
例如x1c 0d1x
在消息资源中
@Path("/{messageId}/comments")
public CommentResource getCommentResource() {
return new CommentResource();
}
和注解资源中
@Path("/") // optional for subresources
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
public class CommentResource {
private CommentService commentService = new CommentService();
@GET
public List<Comment> getAllComments(@PathParam("messageId") long messageId) {
return commentService.getAllComments(messageId);
}
@POST
public Comment addMessage(@PathParam("messageId") long messageId,
Comment comment) {
return commentService.addComment(messageId, comment);
}
@PUT
@Path("/{commentId}")
public Comment updateMessage(@PathParam("messageId") long messageId,
@PathParam("commentId") long commentId, Comment comment) {
comment.setId(commentId);
return commentService.updateComment(messageId, comment);
}
@GET
@Path("/{commentId}")
public String test2(@PathParam("messageId") long messageId,
@PathParam("commentId") long commentId) { // messageId still gets
// passed from parent
// resource
return "Method return commment id: " + commentId + " and messageId: "
+ messageId;
}
@DELETE
@Path("/{commentId}")
public void deleteComment(@PathParam("messageId") long messageId,
@PathParam("commentId") long commentId) {
commentService.removeComment(messageId, commentId);
}
}
所有的messageId路径参数都带有红色下划线,表示错误,但一切都运行良好,看到这些很烦人,我不希望任何人看到我的代码后会抓狂。
谢谢
4条答案
按热度按时间ih99xse11#
我遇到了同样的问题,但我通过转到“首选项”-〉“JAX-RS”-〉“JAX-RS验证器”-〉“JAX-RS资源方法”解决了该问题,并将“Unbound @PathParam”注解值作为警告选中或忽略(默认为error)。如果忽略,您将不再看到该消息。从我所读到的内容来看,可能与JAX-RS验证有关。我使用的是JAX-RS 1。1与Jersey 1.19(不确定在JAX-RS 2.0中是否会有相同的行为)。
dz6r00yl2#
根据我的经验,Eclipse/JBoss Developer Studio中的JAX-RS验证在同一个注入类中包含多个带注解的HTTP方法函数时会出现问题。例如,单个@GET方法不会触发警报,但添加@POST方法会使验证器无法准确检测各种@PathParam和@Path语句之间的绑定。
这很烦人,但不会对代码编译或执行产生负面影响。
正如Corina所解释的,唯一真实的的选择是编辑IDE首选项来降级异常的严重性,我选择“警告”而不是“忽略”,这样就不会完全抑制任何合法的错误。
hkmswyz63#
我遇到这种问题是因为我对我的
@PathParam
使用了错误的导入javax.websocket.server.PathParam;
。我的API测试成功了,但是JAXRS不满意。使用javax.ws.rs.PathParam;
可以解决这个问题。gijlo24d4#
您需要将PathParam放在@Path()中,用{ } Package
就像这样
@POST @Path(“/主题可用性/{idTopic}”)公共响应将用户添加到主题可用性列表(@HeaderParam(“标记”)字符串标记,@PathParam(“idTopic”)int idTopic)