--Environnement - 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
Journal de la console Eclipse
2020-08-10T15:17:17.299+0900|avertissement: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.application.ViewExpiredException: viewId:/base.jsf -Vue/base.Impossible de restaurer jsf.
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)
...réduction...
base.xml
...réduction...
<h:button value="télécharger" onclick="#{uploadBean.onClick}"/>
...réduction...
UploadBean.java
...réduction...
/**
*Obtenir le code JavaScript à afficher pour l'attribut onClick.
* @retourner le code JavaScript.
*/
public String getOnClick() {
StringBuilder builder = new StringBuilder();
builder.append("window.open('upload.jsf");
// ...réduction...
return builder.toString();
}
...réduction...
Je ne sais pas pourquoi écrire une expression EL ne fonctionne pas ... Est-ce parce que je ne suis pas sûr de ce que dit la documentation? Je veux que quelqu'un l'explique d'une manière facile à comprendre ...
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)
(Traduction approximative) L'URL cible doit être gérée par un appel à la méthode encodeResourceURL de ExternalContext. Le nom du paramètre UIP est affiché à gauche et la valeur du paramètre UIP est affichée à droite. Le nom et la valeur doivent être encodés URLE. Chaque instance de UIParameter est séparée par une esperluette conformément aux instructions de la spécification d'URL. Le résultat codé final sera écrit dans l'attribut onclick du bouton sous la forme "window.location.href = ''". Si le développeur spécifie onlclick, la paire nom / valeur pour window.location.href sera ajoutée à la fin du script.
base.xml
...réduction...
<input type="button" value="télécharger" onclick="#{uploadBean.onClick}" />
...réduction...
upload.xml
<h:button value="OK" onclick="submit('#{uploadBean.key}');" />
UploadBean.java
...réduction...
public String getKey() {
return "formId:file";
}
...réduction...
production
<input type="button" onclick="submit('formId:file');window.location.href='/tryJsf/upload.jsf'; return false;" value="OK">