Falscher Button reagiert auf Enter

  • Themenstarter Gelöschtes Mitglied 68249
  • Beginndatum
G

Gelöschtes Mitglied 68249

Gast
Moin,

ich habe da mal ein kleines Problem mit Formularen, bin mir aber nicht ganz sicher, ob es nicht ein reines HTML Problem ist.
Ich habe ein Java Backend mit einem Primefaces Frontend.
Auf einer meiner Seiten habe ich eine relativ komplexe Suche.
Java:
    <h:panelGrid columns="2">
        <p:outputLabel for="@next" value="Test" rendered="#{proIpsSearchHandler.showTest}" />
        <p:inputText value="23203" rendered="#{proIpsSearchHandler.showTest}" />
    </h:panelGrid>
        
    <h:panelGrid columns="3">
        <p:outputLabel for="@next" value="Entität:" />
        <p:selectOneMenu id="entityDropdown" value="#{proIpsSearchHandler.selectedInterfaceName}">
            <p:ajax update="searchValPnl newBtn" listener="#{proIpsSearchHandler.changeEntity}" />
            <f:selectItem itemLabel="Wähle eine Entität" itemValue="" noSelectionOption="true" />
            <f:selectItems value="#{proIpsSearchHandler.selectableInterfaceNames}" required="true" />
        </p:selectOneMenu>
        <p:commandButton id="newBtn" icon="pi pi-star" styleClass="ui-button-success" disabled="#{not proIpsSearchHandler.newEnabled}" update=":datenpflegeForm"
                action="#{dataExplorerHandler.newRecord(proIpsSearchHandler.selectedInterfaceName)}" immediate="true"  />
    </h:panelGrid>
        
    <h:panelGrid columns="4" id="searchValPnl">
        <p:outputLabel for="@next" value="Suchbegriffe"/>
        
        <h:panelGrid id="searchVal1Pnl" columns="3">
            <p:selectOneMenu id="searchfieldDropdown1" value="#{proIpsSearchHandler.selectedSearchfield1}">
                <p:ajax update="searchVal1Pnl searchVal2Pnl" />
                <f:selectItem itemLabel="Wähle ein Suchfeld" itemValue="" noSelectionOption="true" />
                <f:selectItems value="#{proIpsSearchHandler.availableSearchFields}" required="true" />
            </p:selectOneMenu>
            <p:selectOneMenu id="searchOperatorDropdown1" value="#{proIpsSearchHandler.selectedSearchOperator1}">
                <f:selectItems value="#{proIpsSearchHandler.searchOperators}" required="true" />
            </p:selectOneMenu>
            <p:inputText id="searchValue1" value="#{proIpsSearchHandler.searchString1}" required="true" label="Suchbegriff" rendered="#{proIpsSearchHandler.selectedSearchfield1 ne 'Status'}">
                <f:validateLength minimum="2" />
            </p:inputText>
            <p:selectOneMenu id="searchState1" value="#{proIpsSearchHandler.selectedSearchState1}" rendered="#{proIpsSearchHandler.selectedSearchfield1 eq 'Status'}">
                <f:selectItems value="#{proIpsSearchHandler.availableStates}" required="true" />
            </p:selectOneMenu>
        </h:panelGrid>
        
        <h:panelGrid id="searchVal2Pnl" columns="3">
            <p:selectOneMenu id="searchfieldDropdown2" value="#{proIpsSearchHandler.selectedSearchfield2}" rendered="#{not empty proIpsSearchHandler.selectedSearchfield1}">
                <p:ajax update="searchVal2Pnl searchVal3Pnl" />
                <f:selectItem itemLabel="Wähle ein Suchfeld" itemValue="" noSelectionOption="true" />
                <f:selectItems value="#{proIpsSearchHandler.availableSearchFields}" required="false" />
            </p:selectOneMenu>
            <p:selectOneMenu id="searchOperatorDropdown2" value="#{proIpsSearchHandler.selectedSearchOperator2}" rendered="#{not empty proIpsSearchHandler.selectedSearchfield1}">
                <f:selectItems value="#{proIpsSearchHandler.searchOperators}" required="true" />
            </p:selectOneMenu>
            <p:inputText id="searchValue2" value="#{proIpsSearchHandler.searchString2}" required="false" label="Suchbegriff" rendered="#{not empty proIpsSearchHandler.selectedSearchfield1 and proIpsSearchHandler.selectedSearchfield2 ne 'Status'}">
                <f:validateLength minimum="2" />
            </p:inputText>
            <p:selectOneMenu id="searchState2" value="#{proIpsSearchHandler.selectedSearchState2}" rendered="#{not empty proIpsSearchHandler.selectedSearchfield1 and proIpsSearchHandler.selectedSearchfield2 eq 'Status'}">
                <f:selectItems value="#{proIpsSearchHandler.availableStates}" required="false" />
            </p:selectOneMenu>
        </h:panelGrid>
        
        <h:panelGrid id="searchVal3Pnl" columns="3">
            <p:selectOneMenu id="searchfieldDropdown3" value="#{proIpsSearchHandler.selectedSearchfield3}" rendered="#{not empty proIpsSearchHandler.selectedSearchfield2}">
                <p:ajax update="searchVal3Pnl" />
                <f:selectItem itemLabel="Wähle ein Suchfeld" itemValue="" noSelectionOption="true" />
                <f:selectItems value="#{proIpsSearchHandler.availableSearchFields}" required="false" />
            </p:selectOneMenu>
            <p:selectOneMenu id="searchOperatorDropdown3" value="#{proIpsSearchHandler.selectedSearchOperator3}" rendered="#{not empty proIpsSearchHandler.selectedSearchfield2}">
                <f:selectItems value="#{proIpsSearchHandler.searchOperators}" required="true" />
            </p:selectOneMenu>
            <p:inputText id="searchValue3" value="#{proIpsSearchHandler.searchString3}" required="false" label="Suchbegriff" rendered="#{not empty proIpsSearchHandler.selectedSearchfield2 and proIpsSearchHandler.selectedSearchfield3 ne 'Status'}">
                <f:validateLength minimum="2" />
            </p:inputText>
            <p:selectOneMenu id="searchState3" value="#{proIpsSearchHandler.selectedSearchState3}" rendered="#{not empty proIpsSearchHandler.selectedSearchfield2 and proIpsSearchHandler.selectedSearchfield3 eq 'Status'}">
                <f:selectItems value="#{proIpsSearchHandler.availableStates}" required="false" />
            </p:selectOneMenu>
        </h:panelGrid>
    </h:panelGrid>

    <h:panelGrid columns="2">
        <p:commandButton value="Suchen" action="#{proIpsSearchHandler.search}" icon="pi pi-search"
            update="searchResultTable :datenpflegeForm:msgs" />

        <p:commandButton process="@this" value="Ausgabespalten" action="#{proIpsSearchHandler.editColumns}"
            update="manage-result-columns :datenpflegeForm:msgs" oncomplete="PF('manageResultColumnsDialog').show()"
            styleClass="ui-button-success" style="margin-right: .5rem">
            <p:resetInput target="manage-result-columns" />
        </p:commandButton>
    </h:panelGrid>

Zur Erklärung:
Der User wählt sich eine Entität, in der er suchen möchte. Au deren Grundlage hat er Suchfelder in der Entität. Für jeden eingegebenen Suchbegriff kann er einen weiteren, aber maximal drei Suchbegriffe zusätzlich eintragen (das will ich zukünftig noch dynamischer bauen). Bis da hin hat es super geklappt, dass wenn der User den Suchbegriff eingetragen hat und hat Enter gedrückt, dann hat das System automatisch gesucht.
Jetzt kam aber die Möglichkeit dazu, dass man in der Entität neue Datensätze anlegen kann (Zeile 13 & 14). Wenn der Button aktiv ist, und der User will aber suchen und drückt dann einfach Enter, dann läuft nicht die Suche, sondern der Neu-Prozess los.
Wie schon gesagt, evtl. ist das ein reines HTML Problem, aber kann ich der Oberfläche irgendwie erklären, was bei Enter passieren soll?
 

mihe7

Top Contributor
Gib dem commandButton in Zeile 73 (Suchen) eine id, z. B
HTML:
        <p:commandButton value="Suchen" action="#{proIpsSearchHandler.search}" icon="pi pi-search"
            id = "suchen"
            update="searchResultTable :datenpflegeForm:msgs" />
Dann fügst Du ein:
HTML:
<p:defaultCommand target="suchen" />
 

KonradN

Super-Moderator
Mitarbeiter
Als Ergänzung evtl. einfach noch der Showcase von PrimeFaces zu der Thematik default Button:
PrimeFaces Showcase
Dieses dynamische Setzen brauchst Du natürlich nicht, aber ich fand den Showcase recht interessant.

Den Rest konnte ich mir sparen, da @mihe7 schneller war :)
 
G

Gelöschtes Mitglied 68249

Gast
Man , ich hätte schwören können, dass ich schon jeden Artikel in dem Showcase gelesen habe, aber das hab ich glaube ich noch nie gesehen. Danke für die Antworten.
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Back Button bei JSF Anwendung Web Tier 2
J Session ist nach Klick auf Zurück-Button wieder aktiv Web Tier 3
S Button klick soll Java methode aufrufen Web Tier 2
Y Welcher Submit-Button wurde gedrückt? Web Tier 0
O JSF AccessKey auf Button-Beschriftung hervorheben Web Tier 0
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
5 Button ID von betätigten Button herausfinden Web Tier 8
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
M JSF Simple Testklasse für Button - MethodNotFoundException? Web Tier 6
J JSF Kein Methodenaufruf mit Button möglich durch PhaseListener (redirect) Problem? Web Tier 2
L in JSF ein download button erstellen Web Tier 4
B Mit JavaServlet Submit Button ermitteln Web Tier 5
T Button im Servlet - Werte übergeben Web Tier 2
K JSF: Tabelle; Button, Stringausgabe Web Tier 2
Tandibur JSF: Verlinkung mittels Button, bedingte Weiterleitung Web Tier 4
I Zurück Button mit JSF Command Button Web Tier 2
J location response-header? Browser-Back-Button "deaktivieren" Web Tier 9
MQue in JSP: "Drucken"- Button Web Tier 2
P Zurück-Button des Browsers macht Probleme Web Tier 9
M Struts 2 Submit Button lokalisieren Web Tier 5
S Facelets Form: Validation abschalten bei Abbrechen-Button Web Tier 2
T Button abfrage mit Struts leicht gemacht ? Web Tier 3
A JSF: Button reagiert nicht und nicht verständliche Warnung Web Tier 6
G radio button deselect mit struts Web Tier 7
L JSF: commandButton reagiert nicht Web Tier 10

Ähnliche Java Themen

Neue Themen


Oben