当前位置: 首页 > 面试题库 >

资源模型具有用于HTTP方法GET的模棱两可(子)资源方法和由“ @Consumes”和“ @Produces”注释定义的输入mime类型

温浩大
2023-03-14
问题内容

以下内容具有不同的URL时,如何产生此错误?

@Path("/job/{empId}/empProfile")
public EmpProfileResource delegateToEventProfileResource() {
    EmpProfileResource resource = new EmpProfileResource();
    locator.inject(resource);
    return resource;
}

@Path("/job/{empId}/empTask")
public EmpTaskResource getClientLevelAttendees(@PathParam("clientId") long clientId){
    EmpTaskResource resource = new EmpTaskResource (empId);
    locator.inject(resource);
    return resource;
}


@Path("/")
public class EmpTaskResource{
}
@Path("/")
public class EmpProfileResource{
}

是的,它们都是GET并产生相同的,所以?

@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })

错误:

[[FATAL]资源模型具有用于HTTP方法GET的模棱两可(子)资源方法,并且由Java方法public
javax.ws.rs.core.Response中的“ @Consumes”和“
@Produces”注释定义的输入mime类型com.EmpTaskResource.getEmpTasks(java.time.LocalDate,java.time.LocalDate,java.lang.String)和公共javax.ws.rs.core.Response
com.EmpProfileResource.getEmpProfiles(long,java.lang.String)在匹配正则表达式/。这两种方法产生并使用完全相同的mime类型,因此它们作为资源方法的调用将始终失败。


问题答案:

@Path("/")从子资源类中删除。子资源类不需要它们。如果有它们,则将它们添加为根资源类(如果您正在扫描带@Path注释的类)。这就是问题所在。您没有显示子资源类的方法,但是由于它们具有相同的根路径,因此我可以想象问题是由某些重叠的方法引起的。因此,只需删除@Path("/")on子资源类,就可以了。



 类似资料: