Questions & Answers

SOLVED
daniel2
I'm new here

WebEdit5: Dyn. Formulare und Verhalten des JavaClients

Jump to solution

Hallo Community,

ich versuche mit folgender Regel in Abhรคngigkeit zum ausgewรคhlten Wert einer CMS_INPUT_RADIOBUTTON-Komponente (ptEventType) die CMS_INPUT_TEXT-Komponente (ptTitle) required zu setzen, bzw. nicht (wenn ptEventType = child, dann nicht required).

Mit folgender Regel klappt das rein visuell im WebEdit perfekt (keine Warnhinweise mehr) - beim Abspeichern kommt allerdings die Meldung, dass nicht gespeichert werden konnte, da ptTitle nicht ausgefรผllt wurde. Der JavaClient setzt das Feld (natรผrlich) immer auf required.

<ON_SAVE>

    <IF>

        <EQUAL>

          <PROPERTY source="#global" name="LANG"/>

          <TEXT>DE</TEXT>

        </EQUAL>

    </IF>

    <WITH>

      <OR>

        <NOT>

          <PROPERTY source="ptTitle" name="EMPTY"/>

        </NOT>

        <EQUAL>

          <PROPERTY source="ptEventType" name="VALUE"/>

          <TEXT>child</TEXT>

        </EQUAL>

      </OR>

    </WITH>

    <DO>

      <VALIDATION>

        <PROPERTY source="ptTitle" name="VALID"/>

        <MESSAGE lang="*" text="Bitte tragen Sie eine รœberschrift fรผr diesen Artikel ein."/>

      </VALIDATION>

    </DO>

  </ON_SAVE>

Sobald ich den IF-Passus gegen folgenden ersetze, reagiert der WebEdit wie er soll und im JavaClient ist das Feld ptTitle wie erwartet nicht mehr required.

<IF>

   <AND>

      <EQUAL>

       <PROPERTY source="#global" name="LANG"/>

       <TEXT>DE</TEXT>

    </EQUAL>

    <PROPERTY source="#global" name="WEB"/>

  </AND>

</IF>

Die gewรผnschte Lรถsung wรคre, dass JavaClient und WebClient beide abhรคngig von ptEventType ptTitle required setzen. Bekomme ich das irgenwie hin?

Danke im Voraus,

beste GrรผรŸe,

Daniel

0 Kudos
1 Solution

Accepted Solutions

Hi Daniel,

Argl. Lesen hilft. Jetzt sehe ich auch erst das Problem Smiley Happy

Du benutzt ja einen Radiobutton. Und der Wert eines Radiobuttons ist natรผrlich kein Text sondern eine Option. Daher schlรคgt ein Vergleich mit einem Text immer fehl. In Webedit funktioniert's, weil dort technisch bedingt eine Zeichenkette als Wert verwendet wird.

Richtig ist die Verwendung der Eigenschaft ENTRY statt VALUE (gilt รผbrigens auch fรผr Combobox). Allerdings nur dann, wenn der Wert nicht aus der Datenbank geladen wird (dann hรคttest du verloren).

Und als Bonbon: deine Regel vom Anfang stimmt dann. Smiley Happy

GruรŸ

Stefan

View solution in original post

0 Kudos
13 Replies
MichaelaReydt
Community Manager

Hallo,

ich bin mir nicht sicher, ob ich das geschilderte Problem richtig verstanden habe.

Zur Erklรคrung fรผr mich:

Es existieren  die zwei Eingabekomponenten "ptEventType" (Radiobutton) und "ptTitle" (Textzeile).

Die Regel soll folgendes erwirken?

* Radiobutton nicht aktiviert -> Textzeile muss gefรผllt werden

* Radiobutton aktiviert -> Textzeile muss nicht gefรผllt werden

Stimmt das so?

Ich hab das jetzt nur mit zwei CMS_INPUT_TEXT-Komponenten probiert. Da funktioniert die folgende Regel fรผr beide Clients:

<RULES>

<ON_SAVE>

        <IF>

            <EQUAL>

                <PROPERTY source="#global" name="LANG"/>

                <PROPERTY source="#global" name="MASTER"/>

            </EQUAL>

        </IF>

        <WITH>

            <NOT>

                <AND>

                    <PROPERTY source="ptEventType" name="EMPTY"/>

                    <PROPERTY source="ptTitle" name="EMPTY"/>

                </AND>

            </NOT>

        </WITH>

        <DO>

            <VALIDATION>

                <PROPERTY source="ptEventType" name="VALID"/>

                <MESSAGE lang="*" text="No content provided!"/>

            </VALIDATION>

            <VALIDATION>

                <PROPERTY source="ptTitle" name="VALID"/>

                <MESSAGE lang="*" text="No content provided!"/>

            </VALIDATION>

        </DO>

    </ON_SAVE>

</RULES>

LG Michaela

0 Kudos

Hallo Michaela,

nicht ganz:

Sobald ptEventType den Wert "child" annimmt, darf ptTitle nicht leer sein.

Das funktioniert wie gesagt wunderbar im WebEdit mit der meinigen Lรถsung, aber nicht im JavaClient. Ich brรคuchte diese Lรถsung allerdings auf irgendeine Art und Weise fรผr beide Clients.

LG,

Daniel

0 Kudos

Hi Daniel,

ich mag mich ob deines Ziels tรคuschen, aber aktuell sagt deine Regel (if-Teil mal auรŸen vor, denn der bestimmt nur, ob die Regel durchgefรผhrt wird oder nicht), dass ptTitle dann valide ist, wenn es nicht leer ist oder ptEventType = child ist. Ich glaube aber, du willst ptEventType != child haben, oder?

Das wรคre dann folgender Werteabschnitt:

<NOT>

  <AND>

    <PROPERTY source="ptTitle" name="EMPTY"/>

    <EQUAL>

      <PROPERTY source="ptEventType" name="VALUE"/>

      <TEXT>child</TEXT>

    </EQUAL>

  </AND>

</NOT>

Regeln sollten prinzipiell in beiden Clients gleich funktionieren, ansonsten liegt mรถglicherweise ein Fehler vor.

GruรŸ

Stefan

0 Kudos

Hi Stefan,

ich will ptEventType == child haben. Smiley Happy Nur dann soll ptTitle "required" sein โ€“ sonst nicht.

ptTitle wird bei anderen Werten des Radiobuttons sogar ausgeblendet, was auch das Problem darstellen kรถnnte.

So blende ich ptTitle aus (in Abhรคngigkeit eines weiteren Feldes):

<ON_EVENT>

    <WITH>     

      <OR>

        <NOT>

          <PROPERTY source="#global" name="WEB"/>

        </NOT>

        <NOT>

          <AND>

            <EQUAL>

              <PROPERTY source="ptType" name="VALUE"/>

              <TEXT>event</TEXT>

            </EQUAL>

            <EQUAL>

              <PROPERTY source="ptEventType" name="VALUE"/>

              <TEXT>child</TEXT>

            </EQUAL>

          </AND>

        </NOT>

      </OR>

    </WITH>

    <DO>

      <PROPERTY source="ptTitle" name="VISIBLE"/>

    </DO>

  </ON_EVENT>

Vielen Dank und GrรผรŸe zurรผck,

Daniel

0 Kudos

Daniel Klimsa schrieb:

ich will ptEventType == child haben. Smiley Happy Nur dann soll ptTitle "required" sein โ€“ sonst nicht.

Ja, genau das beschreibt die Logik, die ich oben angegeben habe. Smiley Wink

Vielleicht mal umgangssprachlich: ptTitle ist dann ungรผltig, wenn es leer ist und wenn ptEventType child ist.

Folglich gilt:

  • ist ptEventType = child und ptTitle leer, dann ist der Zustand ungรผltig.
  • ist ptTitle nicht leer, dann ist der Zustand gรผltig (egal, welchen Wert ptEventType hat)
  • ist ptEventType != child, dann ist der Zustand gรผltig (egal, welchen Wert ptTitle hat)

Ich vermute mal, dein eigener Denkansatz fรผhrt dich ein wenig in die Irre. Es geht in der Regel nicht um "required", sondern um die Definition, wann der Zustand (also die Kombination der Werte in den Eingabekomponenten) gรผltig ist und wann nicht. Das "required" kommt durch das ON_SAVE hinzu, dass nรคmlich nur dann gespeichert werden kann, wenn ein gรผltiger Zustand erreicht ist.

Hoffe, das klรคrt es ein wenig.

GruรŸ

Stefan

0 Kudos

Hi Stefan,

danke fรผr Deine unendliche Geduld und natรผrlich liegst Du vollkommen richtig. ๐Ÿ™‚

Allerdings habe ich bereits Michaela falsch geantwortet - es ist so, wie ich eingangs schrieb:

Nur wenn ptEventType == child, dann soll ptTitle nicht mit einer Fehlermeldung versehen werden - deshalb mein Lรถsungsansatz mit <or> (ptEventType hat mehrere Werte, bei deren Auswahl ptTitle nicht leer sein darf).

Wie muss ich die Regel schreiben, damit das so funktioniert?

Viele GrรผรŸe,

Daniel

P.S.: Ein eventueller gemeinsamer Kaffee geht dann mal auf mich. ๐Ÿ˜‰

0 Kudos

Hi Daniel,

Argl. Lesen hilft. Jetzt sehe ich auch erst das Problem Smiley Happy

Du benutzt ja einen Radiobutton. Und der Wert eines Radiobuttons ist natรผrlich kein Text sondern eine Option. Daher schlรคgt ein Vergleich mit einem Text immer fehl. In Webedit funktioniert's, weil dort technisch bedingt eine Zeichenkette als Wert verwendet wird.

Richtig ist die Verwendung der Eigenschaft ENTRY statt VALUE (gilt รผbrigens auch fรผr Combobox). Allerdings nur dann, wenn der Wert nicht aus der Datenbank geladen wird (dann hรคttest du verloren).

Und als Bonbon: deine Regel vom Anfang stimmt dann. Smiley Happy

GruรŸ

Stefan

0 Kudos

Hi Stefan,

wir mรผssen uns glaub ich alle nen Kaffee spendieren. ,-)

Danke fรผr den Hinweis mit der zu verwendenden Eigenschaft "ENTRY" โ€“ muss ich die "TEXT"-Tags auch anpassen? Denn so komm ich nicht zum gewรผnschten Ergebnis, obwohl die Eintrรคge nicht aus der DB kommen:

<ON_SAVE>

    <IF>

      <EQUAL>

        <PROPERTY source="#global" name="LANG"/>

        <TEXT>DE</TEXT>

      </EQUAL>

    </IF>

    <WITH>

      <OR>

        <NOT>

          <PROPERTY source="ptTitle" name="EMPTY"/>

        </NOT>

        <EQUAL>

          <PROPERTY source="ptEventType" name="ENTRY"/>

          <TEXT>child</TEXT>

        </EQUAL>

      </OR>

    </WITH>

    <DO>

      <VALIDATION>

        <PROPERTY source="ptTitle" name="VALID"/>

        <MESSAGE lang="*" text="Bitte tragen Sie eine รœberschrift fรผr diesen Artikel ein."/>

      </VALIDATION>

    </DO>

  </ON_SAVE>

Sorry, bin in der Doku nicht fรผndig geworden.

GrรผรŸe,

Daniel

0 Kudos

Das sollte so funktionieren. Bitte gib mal die FS-Versionsnummer an und poste die Definition des Radiobutton.

Nebenfrage: Wozu machst du eigentlich die Einschrรคnkung auf DE?

GruรŸ

Stefan

0 Kudos

Type a product name