자동 WADL 생성의 멋진 기능을 활용하여 RESTful API 구현을 위해 Jersey를 사용하고 있습니다.WADL에 @PathParam의 가능한 값을 포함합니다.
그냥 예를 들어 우리는이 방법
@GET
@Path("/{id}/{attribute}")
@Produces(MediaType.APPLICATION_JSON)
public Object getAttributeByID(@PathParam("id") long id, @PathParam("attribute") String attribute) {
....
}
이 WADL의 다음 조각 생성
<param type="xs:string" style="template" name="attribute:.*"/>
특성이 name
, type
, size
수 있습니다을 우리가 값을 검증 할뿐만 아니라 원하는 런타임에도 생성 된 wadl에서 보여줍니다. this document에 따르면 이러한 기능은 안에 여러 개의 태그를 생성하여 지원해야합니다. <param>
, i .합니다 .e 나는 다음과 같은 것을 기대하고있다 :
<param type="aws:Attributes" style="template" name="attribute">
<option value="name"/>
<option value="type"/>
<option value="size"/>
</param>
내 문제는 뉴저지로 수 있도록하는 것입니다.
@Path("/{id}/{attribute}")
@Produces(MediaType.APPLICATION_JSON)
public Object getAttributeByID(@PathParam("id") long id, @PathParam("attribute") Attribute attribute) {
....
}
곳
public enum Attribute {
name, type, size
}
: 관련 문서를 찾지 못했습니다 내가 String
에서 enum
에 매개 변수의 유형을 변경 아마도 경우이 기능이 자동으로 작동한다고 가정하면, 그래서에 메소드 서명 변경 그러나 저지는 여전히 옵션없이 <param>
태그를 생성하며 매개 변수 유형은 여전히 xs:string
입니다.
Jersey의 코드에서 찾으려고 시도하고 관련 JAXB 주석이있는 com.sun.research.ws.wadl.Option
클래스를 찾았으므로 관련성이있는 것으로 보이지만 작동시키는 법을 모르겠습니다. 문제는 WadlGeneratorConfig
에있는 것 같습니다.
public class OurWADLGenerator extends WadlGeneratorConfig {
@Override
public List<WadlGeneratorDescription> configure() {
return generator(WadlGeneratorApplicationDoc.class)
.prop("applicationDocsStream", "application-doc.xml")
.generator(WadlGeneratorResourceDocSupport.class)
.prop("resourceDocStream", "resourcedoc.xml").descriptions();
}
}
내가 여기서 무엇을 놓치고 : 여기
는 우리가 OurWADLGenerator
코드가 web.xml
<filter>
<filter-name>REST-API</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
................
<init-param>
<param-name>com.sun.jersey.config.property.WadlGeneratorConfig</param-name>
<param-value>com.mycompany.resource.OurWADLGenerator</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mycompany</param-value>
</init-param>
</filter>
에서 뉴저지 정의의 관련 부분입니까? 미리 감사드립니다.
'공공 열거 Attribure'는'public enum Attribute'이어야합니다 ... 당신의 코드 또는 오타에서 복사 되었습니까? –
@martinjakubik, 확실히 오타였습니다. 고맙습니다. 방금 게시물을 수정하고이 실수를 수정했습니다. – AlexR