Input dynamisch rendern mit jsf

Hi,

ich habe ein Model Namens Answer mit der Eigenschaft Text vom Typ String.

In diesem String ist ein Satz vorhanden der vom Benutzer vervollständigt werden soll.
Z.B. „Mit der Farbe #FFFF, welche auch _____ genannt wird, …“

In der Webversion soll statt dem ____ ein Inputfeld angezeigt werden.

Wie kann ich das realisieren?

Ich habe

<h:outputText value="#{AnswerBean.answer.text}" escape="false"/>

probiert, aber das gibt mir natürlich nur den String aus.

Hi mfe,

ich verstehe leider noch nicht genau, was du tun willst und was nicht funktioniert. Soll der gesamte Text aus AnswerBean.answer.text auf dem Frontend ausgerendert werden, inklusive Input Field? Soll jedes “____” automatisch durch ein InputField ersetzt werden?

Gruß
Tim

Soll der gesamte Text aus AnswerBean.answer.text auf dem Frontend ausgerendert werden, inklusive Input Field? Soll jedes „____“ automatisch durch ein InputField ersetzt werden?

Genau!

Also möchtest Du dafür eine eigene JSF-Komponente bauen? Die Standardkomponenten können das nämlich so nicht.

Wenn ich das richtig sehe, bekommst Du vom Server einen String der ______ enthält, was durch ein Input ersetzt werden soll?

a.) eigene Komponente bauen
b.) Auf dem Server den Text ein die entsprechenden Teile aufteilen und in der UI gesondert anbinden.

Wie kann ich das mit einer eigenen Komponente machen?

Ich kenn die <cc:componentens aber dort kann ich ja auch wieder nur die Standardcontrols <verwenden wie h:input usw.

Als Anfänger in JSF ist das Schreiben von eigenen Komponenten nicht unbedingt einfach.

Kannst Du den String nicht einfach in der Backinbean parsen und aufteilen?

Ich kann ein Split machen und das auf zwei Variablen aufteilen. Ich wüsste aber nicht wie mir das weiterhelfen sollte. Ich möchte das input Feld innerhalb des Satzes rendern. Der “____” kann der Benutzer beim erstellen beliebig frei setzen.

Klappt etwas wie

<div>
   #{myBean.preText} <h:inputText value="#{myBean.value}" /> #{myBean.postText}
</div>

nicht?

1 „Gefällt mir“

Ah! So war das gemeint! Werde ich ausprobieren danke!