Werte aus Eingabefeld 1 in Eingabefeld 2 übernehme und bestimmte Zeichen ersetzen
Hallo,
wir möchten bei uns über eine Regel Werte aus einem Eingabefeld in ein anderes übernehmen und dort dann Leerzeichen durch Unterstriche und Großbuchstaben zu Kleinbuchstaben ersetzen lassen.
Bsp.:
Eingabefeld 1: "Test Feld"
Eingabefeld 2: "test_feld"
Die Regel um den Wert zu übernehmen haben wir schon:
<RULE>
<WITH>
<PROPERTY name="VALUE" source="st_anchorText"/>
</WITH>
<DO>
<PROPERTY name="VALUE" source="st_anchorId"/>
</DO>
</RULE>
Nur würden wir jetzt noch gerne wissen, ob man den eingegebenen Wert auch wie gewünscht manipulieren kann.
Hat jemand so etwas ähnliches schon einmal gemacht?
Vielen Dank!
Gruß,
Nikolai
-
Hallo Nicolai,
normalerweise würde ich hier antworten, dass man für einen solchen Anwendungsfall einen entsprechenden ValueService schreiben sollte, der die Daten entsprechend umwandelt.
Da die Anforderungen hier aber sehr überschaubar sind, würde ich statt dessen den ScriptValueService verwenden, da es bei solch kleinen Anpassungen keine Rolle spielen sollte, wenn ein Beanshell Skript instanziiert werden muss.
Das würde dann beispielsweise so aussehen:
Regel:
<RULE>
<SCHEDULE delay="500" id="set_anchorId" service="ScriptValueService">
<PARAM name="script">
<TEXT>set_anchor_id</TEXT>
</PARAM>
<PARAM name="anchorText">
<PROPERTY name="VALUE" source="st_anchorText"/>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY name="VALUE" source="st_anchorId"/>
</DO>
</RULE>Die Regel macht nichts anderes, als den Wert der Eingabekomponente "st_anchorText" als Variable mit den Namen "anchorText" an das Skript set_anchor_id zu übergeben.
Und das dazugehörige Skript (für das Beispiel mit dem Referenznamen "set_anchor_id")
return anchorText.toLowerCase().replaceAll(" ","_");Wenn aber mehrere entsprechende Umwandlungen pro Seite benötigt werden, ist es wahrscheinlich auch bei solchen einfachen Anwendungsfällen besser, einen eigenen ValueService zu implementieren. Bei der Verwendung des ScriptService muss bei jeder Ausführung ein neuer Beanshell Interpreter gestartet werden, was Rechenzeit und Speicherplatz benötigt.
Viele Grüße
Holger2
Vous devez vous connecter pour laisser un commentaire.
Commentaires
1 commentaire