Input dynamisch rendern mit jsf

jsf

#1

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.


#2

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


#3

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!


#4

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.


#5

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.


#6

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?


#7

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.


#8

Klappt etwas wie

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

nicht?


#9

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