REST- und Nicht-REST-URLs Together funktionieren nicht

Alle meine Versuche, ein funktionierendes Beispiel für beide, reine Ruhekonfigurationen zusammen mit mindestens einer nicht-Ruhe-URL, zu erhalten, sind fehlgeschlagen.

Ich habe diese Seite als Leitfaden:https: //cwiki.apache.org/confluence/display/WW/REST+Plugi

Ich habe ein Modell,Receipt mit ein paar Testfeldern.

Die reine REST-Lösung funktioniert wie erwartet:

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

funktioniert gut mit diesen Ergebnissen:

receipt.json => Liste aller Belege anzeigen

receipt/1.json => Quittung mit ID = 1 anzeigen

Aber wenn ich versuche, erholsame URLs mit nicht-erholsamen URLs zu mischen (genau so, wie ich es im Wiki-Artikel beschrieben habe):

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

it bläst damit auf:

Struts has detected an unhandled exception:

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

Ich bin verwirrt. Warum wird nach execute () gesucht? execute () sollte eine Methode für Aktionen sein. Ich gebe ihm keine Aktion, ich gebe ihm einen Controller wie zuvor.

Wie kann ich das beheben?

Hier ist dieReceiptController:

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

Offensichtlich mache ich hier etwas falsch. Muss ich noch etwas anderes wissen als das, was hier erklärt wird?

Auch, wie lese ich das? :

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

Bedeutet dies, dass alles, was mit @ begin/rest wird meinem reinen, erholsamen Controller zugeordnet, der wiederum meinem Beleg und allem anderen ohne das @ zugeordnet wir/restird das @ -Präfix den Standard-Struts-Zuordnungen zugeordnet? oder gehe ich hier ganz in die falsche richtung?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage