URLs REST e não-RESTful Together não funcionam

Todas as minhas tentativas de obter um exemplo prático de configuração pura e reparada, juntamente com pelo menos uma URL não reparada, falharam.

Eu tenho esta página como um guia:https://cwiki.apache.org/confluence/display/WW/REST+Plugin

Eu tenho um modeloReceipt com alguns campos de teste.

A solução REST pura funciona conforme o esperado, fazendo o seguinte:

<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"/>

funciona bem com estes resultados:

receipt.json => exibe a lista de todos os recibos

receipt/1.json => exibe o recibo com id = 1

Mas se eu tentar misturar URLs tranquilos com URLs tranquilos (da mesma maneira que me disseram no artigo da wiki) assim:

<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"/>

explode com isso:

Struts has detected an unhandled exception:

Messages:   
com.immaculate.receipto.controllers.ReceiptController.execute()
File:   java/lang/Class.java
Line number:    1,778

Estou confuso. Por que ele está procurando por execute ()? execute () deve ser um método presente nas ações. Não estou dando uma ação, estou dando um controle como antes.

Como faço para corrigir isso?

Aqui está oReceiptController:

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;
    }
}

Obviamente, estou fazendo algo errado aqui. Preciso saber outra coisa além do que é explicado aqui?

Além disso, como eu leio isso? :

<constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts"/>

Isso significa que tudo que começa com/rest mapeará para meu controlador tranqüilo puro que, por sua vez, mapeará para meu recibo e qualquer coisa sem o/rest prefixo será mapeado para os mapeamentos de struts padrão? ou estou indo totalmente na direção errada aqui?

questionAnswers(2)

yourAnswerToTheQuestion