둘 다 작동 예제를 얻으려는 나의 모든 시도, 최소한 하나의 안정되지 않은 URL과 함께 순수한 안락한 구성이 실패했습니다.REST와 비 RESTful URL의 Together가 작동하지 않습니다.
나는 가이드로이 페이지가 : https://cwiki.apache.org/confluence/display/WW/REST+Plugin
나는 하나 개의 모델, 몇 가지 테스트 필드 Receipt
있습니다.
순수한 REST 솔루션은 그래서이 일을 예상대로 작동합니다
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<constant name="struts.mapper.class" value="rest" />
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.default.parent.package" value="rest-default"/>
<constant name="struts.convention.package.locators" value="controllers"/>
작품 아니라 이러한 결과 :
receipt.json
=> 모든 영수증의 목록을 표시
receipt/1.json
=> id = 1 인 영수증을 표시하십시오.
그러나 비 안정 URL을 사용하여 편안하게 섞으 려한다면 (이 같은 위키 문서에 LD는) :
<constant name="struts.action.extension" value="xhtml,,xml,json,action"/>
<constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" />
<constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts"/>
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.default.parent.package" value="rest-default"/>
<constant name="struts.convention.package.locators" value="controllers"/>
는이와 불면 :
Struts has detected an unhandled exception:
Messages:
com.immaculate.receipto.controllers.ReceiptController.execute()
File: java/lang/Class.java
Line number: 1,778
내가 혼란 스러워요. execute()를 검색하는 이유는 무엇입니까? execute()는 액션에있는 메소드 여야합니다. 나는 그것에게 행동을주지 않을거야, 나는 이전처럼 그것을 컨트롤러에게주고있다.
어떻게 수정합니까?
다음은 ReceiptController
입니다 :
public class ReceiptController implements ModelDriven<Object> {
private ReceiptManager receiptManager = new ReceiptManager();
private String id;
private Receipt model = new Receipt();
private Collection list;
public Object getModel(){
if(list==null){
return model;
} else {
return list;
}
}
public HttpHeaders create() {
receiptManager.save(model);
return new DefaultHttpHeaders("show");
}
public HttpHeaders show() {
model = receiptManager.find(id);
return new DefaultHttpHeaders("show");
}
public HttpHeaders destroy() {
model = receiptManager.destroy(id);
return new DefaultHttpHeaders("show");
}
public HttpHeaders index() {
list = receiptManager.list();
return new DefaultHttpHeaders("show");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
은 분명히 내가 여기에 뭔가 잘못하고 있어요. 여기에 설명 된 것 외에 다른 것을 알 필요가 있습니까?
또한 어떻게 읽습니까? :
<constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts"/>
이이
/rest
로 시작하는 모든의
/rest
접두사없이 영수증 아무것도 차례로지도의 기본 스트럿 매핑에 매핑 할 것입니다 내 순수 편안한 컨트롤러에 매핑하는 것을 의미합니까? 아니면 완전히 잘못된 방향으로 가고 있습니까?
<constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts"/>
에 의해 정의 된 해당 매퍼에 매핑을 찾는
감사합니다. 이 주제에 대한 더 많은 문서는 어디에서 찾을 수 있습니까? –
Struts 웹 사이트의 링크를 업데이트했습니다. 천만에요. –