我有一个完美的资源:
@Path("/adoptable")
public class AdoptableAnimalsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get()
{
return "dogs";
}
}
现在,我该如何将这个类变成嵌套的内部类? 例如,
public class Grouper
{
@Path("/adoptable")
public class AdoptableAnimalsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get()
{
return "dogs";
}
}
}
当我尝试它时,我得到404 Not Found错误,表明Jersey不会将内部类视为资源。
答案 0 :(得分:5)
您需要使用Sub-Resource Locators。基本上,您将在Grouper
类中使用一个方法,该方法将实例化AdoptableAnimalsResource
类。 AdoptableAnimalsResource
不应该有@Path
注释。它可以,但它会被忽略。它的方法可以有子资源@Path
。 Grouper
类中的方法应该@Path
标识AdoptableAnimalsResource
子资源。
所以它可能看起来像
@Path("/groups")
public class Grouper {
@Path("/adoptable")
public AdoptableAnimalsResource animalSubResource() {
return new AdoptableAnimalsResource();
}
public class AdoptableAnimalsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get() {
return "dogs";
}
}
}