Antwort hat schon begangen wurden
Habe ich eine Abbrechen-Schaltfläche, die verwendet werden, um nur Werte aktualisieren. Jetzt habe ich umgestellt, Sie zu aktualisieren oder Neuladen der Seite und zu bewegen, um Nur-Lese-Seite. So verändert Abbrechen-Schaltfläche zum aufrufen einer Funktion wie dieser,
function chkArea(){
var url='<c:out value="${model.contextPath}"/>/abcHandler.do?operation=view;
document.forms[0].action=url;
document.forms[0].submit();
}
Nun, wenn ich submit Abbrechen, bekomme ich die folgende Meldung in der UI,
java.lang.IllegalStateException: Response has already been committed at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.EvermindHttpServletResponse.resetBuffer(EvermindHttpServletResponse.java:1892) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:249) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:51) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:193) at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:284)........
und die Konsole zeigt folgenden Fehler:
javax.servlet.ServletException: The "url" attribute illegally evaluated to "null" or "" in <import>
at com.evermind.server.http.EvermindPageContext.handlePageThrowable(EvermindPageContext.java:899)
at com.evermind.server.http.EvermindPageContext.handlePageException(EvermindPageContext.java:816)
Sehe ich keine Fehler in der JS-oder JSP. Was scheint falsch zu sein? irgendwelche Vorschläge?
Für Googler: wenn Sie
externalContext.redirect()
, versuchen Sie diese Bedingung um: if (!externalContext.isResponseCommitted()) { }
(Dies war der Grund, warum ich immer diese Exception.)InformationsquelleAutor JNPW | 2013-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, das problem ist nicht in der JSP-oder JS in deinem Beispiel1. Das problem liegt in dem, was Ihr servlet tut, wenn es kommt ".../abcHandler.tun?Betrieb=view;" Anfrage.
Das problem ist, dass Sie versuchen, um Dinge zu tun, die würde erfordern eine änderung des HTTP-response-Header ... nachdem die Header gesendet wurden. Das ist es, was die Ausnahme /Meldung sagt. (Eine Antwort ist "verpflichtet", sobald Sie die servlet-framework startet, schreiben Sie die Antwort. Das ist in der Regel ausgelöst, wenn etwas öffnet die servlet-output-stream /writer ... in Vorbereitung auf das schreiben von response-body.)
Geben Sie eine korrekte Diagnose und vernünftige Ratschläge, wie fix das problem hier, wir müssen sehen, Servlet /JSP-code, ist der Umgang mit der obigen Anfrage.
"Url illegal ausgewertet zu null" - Meldung ist ein bisschen schwer zu platzieren. Es könnte geschehen, bevor die
IllegalStateException
... oder nach.(Eine Möglichkeit ist, dass Sie Ihre JSP-code versucht, etwas zu tun mit einigen " url " - Attribut, das ist unerwartet
null
, das ist das auslösen einer Ausnahme. Dann wird der container error-handler, die versuchen, eine andere Antwort status ... und , dass wird scheitern, weil die Antwort bereits begangen.)In der Zusammenfassung, es ist nicht möglich, um herauszufinden, was die root problem ist ohne weitere Informationen; d.h. der code.
1 - Eigentlich fehlt ein schließendes Anführungszeichen für die
url
Initialisierung ... aber ich gehe davon aus, dass nur die Transkription-Fehler.InformationsquelleAutor Stephen C
Kommt dieser Fehler beim schreiben auf den Ausgabe-stream von jsp-und dann wieder die Durchführung einiger Betrieb auf. Dies bewirkt, dass
IllegalStateException
. Sollten Sie keine operation aus, wenn die Antwort bereits begangen. Von engagierten, ich meine, die Antwort wird zurück an den client gesendet. Ein häufiges Szenario istStellen Sie sicher, dass Sie nicht so etwas wie den code oben in Ihre jsps
Ich weiß nicht haveanything wie oben.Meine actionclass nur nach vorne zu einer JSP.
und
stream.flush()
bewirkt, dass die Reaktion begangen werden. so fühle ich mich Ihrautoflush = true
wird nicht helfen. Es wird zum problem.Ich habe versucht, aber dass didnt Hilfe. So wieder zurück mein code.
InformationsquelleAutor Prasad Kharkar