JSF form absenden ohne require validation (andere schon)

Diskutiere form absenden ohne require validation (andere schon) im Web Tier Forum; Hi! Ich habe ein größeres Form auf einer JSF Seite, bei dem viele Komponenten verschiedene Validatoren haben. Manche eingaben müssen auch...

  1. ArkLut
    ArkLut Neues Mitglied
    Hi!

    Ich habe ein größeres Form auf einer JSF Seite, bei dem viele Komponenten verschiedene Validatoren haben.
    Manche eingaben müssen auch ausgefüllt werden. Mittels require="true" oder dem <requireValidator >
    Nun möchte ich einen (zusätzlichen) commandButton Nutzen der den Input verarbeitet dabei die Validatoren ausfürt aber eben ohne die require-Validatoren (egal ob über require="true" oder <requireValidator> eingebunden).

    Gibt es bei JSF eine Möglichkeit das einfach zu machen?
    Mir fällt dabei gar nichts ein ... nicht mal ein komplizierter weg.
    Wäre für Ideen dankbar!
     
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. BuckRogers
    BuckRogers Mitglied
    Hi ArkLut,

    um dieses Problem zu lösen verwendest du am besten Javascript und änderst das Attribut deiner Tags BEVOR der Request abgesendet wird. An welcher Stelle du die Attribute änderst bleibt dir überlassen. Das Attribut required=true und auch das Tag machen das Gleiche. Persönlich würde ich erst einmal alle Felder so ändern, dass ausschließlich das Attribut verwendet wird. Dieses kannst du dann bspw. parametriseren (muss man aber nicht) und dann via JS-Funktionen ändern.

    Mal ein Pseudo Beispiel:

    HTML:
    <h:inputSecret id="password" value="#{user.password}"
                   size="20" required="true"
                   label="Password" />
    <h:commandButton value="Submit" action="result" id="submitPasswd"/>

    <!-- JS -->
    Event.observe(window, "load", function () {
        $('submitPasswd').observe("click", function (e) {      
             <!-- ... Attribute hier ändern
             ... Form absenden -->
        });
    });
     
    Man muss sicherlich ein wenig herum probieren bis es funktioniert, das wäre meine Herangehensweise.
    Ich weiß nicht ob sich das von hause aus mit JSF realisieren lässt. Ich glaube aber nicht.

    Grüße
     
  4. stg
    stg Bekanntes Mitglied
  5. ArkLut
    ArkLut Neues Mitglied
    Danke, habe mich jetzt bischen weiter durch links gelesen.

    @BuckRogers:
    das sieht mir ziemlich Aufwendig/komplex aus :)
    Und damit auch fehleranfällig :/

    @stq:
    sieht mir doch nach zwei verschiedenen Herangehensweisen aus.
    1) Nutzt die Möglichkeit in der EL auf die Parameter von den requests zu zugreifen.
    dazu wird empty param['<Component.ClientId vom sendenden commandButton>'] verwendet.
    und das eben im require drinnen. eigentlich klar und einfah.

    2) Eigener require-Validator + einen Check ob vom Absender ein Parameter mitgesendet wird.
    Wirkt mir zuerst sehr nett, da ggf nett erweiterbar. Aber dann denke ich mir selbst gemachte sachen haben immer eine höhere Wahrscheinlichkeit zu nicht berücksichtigten Nebeneffekten.


    Nach einiger weiterer Recherche habe ich mich für Version (1) entschieden da sie scheinbar auf Stack Overflow empfohlen.
    Einziges Manko oder Problem: woher bekomme ich die Client ID des commandButtons ...
    Man kann sie aus dem gerenderten HTML output auslesen ud dann einfügen. Klappt ist aber für die Wartung übel.
    In den Beispielen fannd ich auch noch:
    Code (Text):

    <p:inputText ... required="#{not empty param[save.clientId]}" />
    <p:commandButton binding="#{save}" value="Save" ... />
     
    .clientId ist ein Property, welches jedem componente hat (ab JSF2) aber mir ist nicht klar wie "save" die componente anspricht ... klaoppt das über dass binding?

    aber auch das wäre blöd, da wenn die ich die input Komponenten verschiedenen xhmls zusammen baue und sie in mehreren views vorkommen, kann ich nicht mehr auf den "gebindeten" namen (save) gehen, da er dann im view ohne den button nicht zwingend drin ist und daher nicht gebaut werden kann ...
     
  6. ArkLut
    ArkLut Neues Mitglied
    So wollte nur nochmal Bescheid geben:
    Ursprünglich wollte ich mich auf (1) festlegen. Dies tue ich aber nur wen Input-Control und commadControl fix im selben file liegen, da es dann wartungstechnisch keine Probleme gibt und es einfach zu lesen ist.

    Methode (2) also einen eigenen Validator mache ich wenn es skipable sein soll und die betroffenen componenten über mehrere files verteilt sind. command kann dann einfach einen param haben mit Name "SkipableValidator" der dann im validator gecheckt werden kann.
    Als alternative dazu hätte ich noch die Möglichkeit direkt im require/requireValidator mittels #{not param.SkipableValidator}
     
Die Seite wird geladen...

form absenden ohne require validation (andere schon) - Ähnliche Themen

Formular absenden und Quelltext auslesen
Formular absenden und Quelltext auslesen im Forum Java Basics - Anfänger-Themen
HTML Formular mit Java ausfüllen und absenden
HTML Formular mit Java ausfüllen und absenden im Forum Java Basics - Anfänger-Themen
Wann ist Client plattformunabhängig?
Wann ist Client plattformunabhängig? im Forum Java Basics - Anfänger-Themen
javax.vecmath Transformationsmatrix für LWJGL3
javax.vecmath Transformationsmatrix für LWJGL3 im Forum Allgemeine Java-Themen
Koordinatentransformation
Koordinatentransformation im Forum Plauderecke
Thema: form absenden ohne require validation (andere schon)