--Umgebung - CentOS Linux release 7.8.2003 (Core) - Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0) - openjdk version "11.0.7" 2020-04-14 LTS - JSF 2.3.9
Eclipse-Konsolenprotokoll
2020-08-10T15:17:17.299+0900|Warnung: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.application.ViewExpiredException: viewId:/base.jsf -Aussicht/base.Jsf konnte nicht wiederhergestellt werden.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:194)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:109)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707)
...Kürzung...
base.xml
...Kürzung...
<h:button value="hochladen" onclick="#{uploadBean.onClick}"/>
...Kürzung...
UploadBean.java
...Kürzung...
/**
*Rufen Sie den JavaScript-Code ab, der für das onClick-Attribut ausgegeben werden soll.
* @JavaScript-Code zurückgeben.
*/
public String getOnClick() {
StringBuilder builder = new StringBuilder();
builder.append("window.open('upload.jsf");
// ...Kürzung...
return builder.toString();
}
...Kürzung...
Ich bin mir nicht sicher, warum das Schreiben eines EL-Ausdrucks nicht funktioniert ... Liegt es daran, dass ich nicht sicher bin, was in der Dokumentation steht? Ich möchte, dass jemand es auf leicht verständliche Weise erklärt ...
The entire target URL string must be processed by a call to the encodeResourceURL() method of the ExternalContext. The name of the UIParameter goes on the left hand side, and the value of the UIParameter on the right hand side. The name and the value must be URLEncoded. Each UIParameter instance is separeted by an ampersand, as dictated in the URL spec. The final encoded result will be written out to the onclick attribute of the button as "window.location.href = ''". If the developer has specified a custom onlclick the window.location.href name/value pair will be appended at the end of the developer specified script. button(JSF 2.1 View Declaration Language: Facelets Variant)
(Grobe Übersetzung) Die Ziel-URL muss durch einen Aufruf der encodeResourceURL-Methode von ExternalContext verarbeitet werden. Der Name des UIParameters wird links und der Wert des UIParameters rechts angezeigt. Der Name und der Wert müssen URLE-codiert sein. Jede UIParameter-Instanz wird gemäß den Anweisungen in der URL-Spezifikation durch ein kaufmännisches Und getrennt. Das endgültige codierte Ergebnis wird als "window.location.href = ''" in das onclick-Attribut der Schaltfläche geschrieben. Wenn der Entwickler onlclick angibt, wird das Name / Wert-Paar für window.location.href am Ende des Skripts hinzugefügt.
base.xml
...Kürzung...
<input type="button" value="hochladen" onclick="#{uploadBean.onClick}" />
...Kürzung...
upload.xml
<h:button value="OK" onclick="submit('#{uploadBean.key}');" />
UploadBean.java
...Kürzung...
public String getKey() {
return "formId:file";
}
...Kürzung...
Ausgabe
<input type="button" onclick="submit('formId:file');window.location.href='/tryJsf/upload.jsf'; return false;" value="OK">