[JAVA] So führen Sie die Verarbeitung von Aktionsattributen nur aus, wenn der Bestätigungsdialog mit h: commandButton in Ordnung ist

--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

Was du machen willst

  1. Drücken Sie die Taste, um den Bestätigungsdialog anzuzeigen
  2. Klicken Sie im Bestätigungsdialogfeld auf die Schaltfläche [OK], um die Geschäftslogik des Aktionsattributs auszuführen.
  3. Es passiert nichts, wenn die Taste [Abbrechen] im Bestätigungsdialog gedrückt wird

So führen Sie die Verarbeitung von Aktionsattributen nur aus, wenn Sie im Bestätigungsdialog OK sind

*. 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";
    }
}

Fehlerfall: Nicht mit dem onclick-Attribut zurückkehren

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()}" />

Recommended Posts

So führen Sie die Verarbeitung von Aktionsattributen nur aus, wenn der Bestätigungsdialog mit h: commandButton in Ordnung ist
[swift5] So führen Sie die Verarbeitung aus, wenn Sie auf die TabBar tippen
Großschreibung nur des angegebenen Bereichs mit Teilzeichenfolge. (Verwendung von Teilzeichenfolgen)
Auf Anforderung wird der Zugriff auf die Ressource beim Push mit Docker verweigert
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
[Docker] Erstellen, wenn der Quellcode auf dem Container gebunden ist
So beschränken Sie die Aktion des Übergangsziels, wenn Sie nicht angemeldet sind
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
[Verarbeitung × Java] Verwendung der Schleife
[Verarbeitung × Java] Verwendung der Klasse
[Verarbeitung × Java] Verwendung der Funktion
So wird die Abfragezeichenfolge bei Verwendung von PreparedStatement in JDBC tatsächlich ausgegeben
[IntelliJ IDEA] Formatieren nur lokaler Änderungen beim Speichern des Quellcodes
Festlegen, wann in junit "Der Konstruktor Empty () ist nicht sichtbar" auftritt
So lösen Sie, wenn Sie mit einem neuen Container keine Verbindung zur Datenbank herstellen können, weil der Port dem vorhandenen Docker-Container zugewiesen ist