--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
*. Das html
Tag und next.xhtml
werden weggelassen.
Verwenden Sie window.confirm für den Bestätigungsdialog.
base.xhtml
<h:head>
<title>Für Ponsukes Qiita</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<h:outputScript library="js" name="base.js"/>
</h:head>
<h:body>
<h3>Dies ist Bildschirm A.</h3>
<h:form id="formId">
<div>
<h:commandButton value="Bildschirmübergang"
onclick="return confirmMessage();"
action="#{sampleBean.showNextPage()}" />
</div>
</h:form>
</h:body>
base.js
/**
*Zeigen Sie einen Bestätigungsdialog an.
* @return {boolean}Das Auswahlergebnis im Bestätigungsdialog ist wahr:Drücken Sie die OK-Taste.
*/
function confirmMessage() {
return window.confirm('Kann ich den Bildschirm ändern?');
}
SampleBean.java
package brans;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@Named
@ViewScoped
public class SampleBean implements Serializable {
/** serialVersionUID. */
private static final long serialVersionUID = -6782548672735889274L;
/**
*Zeigen Sie die nächste Seite an.
* @Zurück Nächste Seite.
*/
public String showNextPage() {
return "next.xhtml";
}
}
Ich kehre in base.js zurück, also ist es gut, oder? Ich versage oft, weil ich denke. Der Aktionsattributprozess wird unabhängig vom Ergebnis des Bestätigungsdialogs ausgeführt. Ich möchte, dass jemand den Grund erklärt ...
base.xhtml
<!--Kürzung-->
<h:commandButton value="Bildschirmübergang"
onclick="confirmMessage();"
action="#{sampleBean.showNextPage()}" />
<!--Kürzung-->
Das Schreiben wie dieses funktioniert gut für jede Schaltfläche
<h:commandButton value="Bildschirmübergang"
onclick="return window.confirm('Kann ich den Bildschirm ändern?');"
action="#{sampleBean.showNextPage()}" />