2016-04-01 12 views
0

Ich mache eine kleine Proof of Concept/Vorlage App mit Spring MVC. Ich wurde gebeten, GET, POST, PUT und DELETE unter bestimmten Umständen zu verwenden. Das habe ich jetzt mit viel Hilfe aus diesem Forum geschafft.PUT und DELETE aus HTML ohne JavaScript

Meine Sorge in diesem Stadium ist, dass die einzige Möglichkeit, die ich erarbeiten konnte, um einen DELETE-Aufruf zu senden, ein zweites Formular zu meiner JSP-Seite mit einer DELETE-Methode hinzuzufügen. Als Beweis Konzept habe ich einen Lösch auf der Bearbeitungsseite, die ungefähr so ​​aussieht ...

//Edit Form 
<form:form method="PUT" modelAttribute="person" action="${pageContext.request.contextPath}/person/${person.id}" > 

    // fields 

    <input type="submit" value="Save and continue"></input> 
</form:form> 

//DELETE FORM 
<form:form method="DELETE" modelAttribute="person" action="${pageContext.request.contextPath}/person/${selectedOpportunity.id}" > 
    <input type="submit" class="btn btn-success btn-lg" value="Delete"></input> 
</form:form> 

Dies funktioniert gut - sowohl das Löschen und Bearbeiten. Mein Anliegen ist als übergeordneter Ansatz etwas restriktiv. Wenn wir uns weiter mit den Anforderungen und dem Design beschäftigen, muss ich vielleicht flexibler sein - zum Beispiel eine Liste von Objekten mit & löschen Schaltflächen neben ihnen z.

Mr Bob Baines [edit] [delete] 
Ms Clara Dumont [edit] [delete] 
... 

Ich glaube nicht, dass ich das tun kann meinen aktuellen Ansatz, und ich sehe die Möglichkeit mit, dass das Design langsam wird besser und mehr gewunden und verdreht zu folgen, was ich in der Lage bin, als technisch eher zu tun, was ist tatsächlich benötigt.

Ich habe eine Reihe von Möglichkeiten gesehen (in diesem Forum hauptsächlich), Javascript und jquery zu verwenden, um eine HTTP-Anfrage zu löschen, aber ich werde aktiv davon abgeraten, JavaScript auf den Seiten zu verwenden, wo immer es möglich ist. Kann mir jemand sagen, ob es eine Möglichkeit gibt, ein DELETE oder POST von HTML manuell zu senden? Oder sollte ich gegen die Design-Anforderung zurückdrängen? Ich habe einige Argumente gesehen, dass DELETE und PUT nicht notwendig sind, da sie alle mit POST- und Form-Inhalten ausgedrückt werden können, aber in breiteren Diskussionen über die REST-Architektur scheint ihre Verwendung als Standardansatz zu gelten.

+0

Sie benötigen kein JavaScript, um eine Anfrage zu senden. Sie brauchen es nur, um den Wert des versteckten Feldes zu setzen, das die "echte" Methode enthält. – zeroflagL

+0

Dies würde wahrscheinlich Javascript benötigen, um den Wert (_method) zu setzen, obwohl ich denke? Es sei denn, es gab für jeden Knopf ein separates Formular, was absurd erscheint, aber ich nehme an, es würde keinen Schaden anrichten. – gringogordo

+1

Ja, um eine Frage zu stellen. Und ich sehe auch kein Problem mit einem separaten Formular für die Löschanforderung, solange es nicht in einem anderen Formular verschachtelt ist. – zeroflagL

Antwort

0

HTML-Formulare können POST- oder GET-Anfragen senden. Alles andere in HTML kann nur GET-Anfragen senden (es sei denn, die Browser-Caching-Regeln bewirken, dass eine HEAD-Anfrage automatisch auf Frische überprüft wird).

Die einzige Möglichkeit, eine andere Art von HTTP-Methode aus einem HTML-Dokument auszulösen, ist über JavaScript oder Plugins.

Verwandte Themen