2012-05-09 16 views
13

Używam JSF 1.2<h: outputText> drukuje HTML jak jest zamiast rzeczywistej HTML

Próbuję wydrukować tekst używając <h:outputtext>

<h:outputText id="warningDose" styleClass="redText" value="#{templatePrescriptionMaintenanceBackingBean.doseWarningText}"></h:outputText> 

Teraz zmienna ta zawiera tekst ze znacznikami html. <b>, <i> itp ...

Ale wyświetla treść tak jak jest, zamiast rzeczywistego wydrukowania pogrubienia lub kursywy.

Czy jest jakiś sposób, abyśmy mogli uczynić to <h:outputText> tak, że daje odpowiedź HTML?

Odpowiedz

33

należy ustawić w godz: tag outputText:

escape="false" 

Należy jednak pamiętać, że mieszanie „Widok” budowę (tj, tworząc łańcuch z tagów HTML) pomiędzy stronie widoku JSF i instrumentu bazowego Fasola jest złą praktyką. Cała "produkcja widoków" powinna znajdować się na stronie widoku.

+0

Dlaczego właściwie jest złą praktyką mógłbyś dalsze prace na tym Nawet jeśli mam * pełne * kontrolę nad generowanym HTML? kod? – jpangamarca

+0

@jpangamarca z tego samego powodu, dla którego MVC jest dobrą praktyką, pozwala robić widoki za pomocą widoku określonego języka (np. html, fragmenty, freemarker itp.) i utrzymuje model nieświadomy różnych reprezentacji. Czasami wygodniej jest tworzyć określone "modele" i robić to w Javie, ale generalnie najlepiej tego unikać, ponieważ Java nie jest odpowiednia (a kod zwykle wygląda dość paskudnie) do opisu widoków. Mam nadzieję, że to ma sens. – Stef

+0

Dzięki @Stef. Kiedy zmuszono mnie do wyprowadzania kodu HTML w postaci h: outputText z komórkami siatki, nie mogłem utworzyć faceletki, ponieważ strona była źle zaprojektowana i nie mogłem jej przeprojektować (style CSS zostały zastosowane przez identyfikatory komponentów , fuj!), więc identyfikatory zostaną zduplikowane, a strona zostanie wysadzona w powietrze. Dzięki. – jpangamarca

6

Wystarczy ustawić, aby nie uciec.

<h:outputText id="warningDose" escape="false" styleClass="redText" value="#{templatePrescriptionMaintenanceBackingBean.doseWarningText}"></h:outputText> 
1

Miałem bardzo podobny problem. Moje pytanie brzmi here

moja strona xhtml wygląda -

<h:outputText itemEscaped="false" escape="false" value="#{singleViewResultDO.associatedCode}" /> 

associatedCode jest uzyskanie wartości z kwerendy SQL, gdzie chcę użyć tagu HTML mieć stylizacji warunkowego.

Oto moje zapytanie SQL wygląda następująco:

Select A, REPLACE(Wm_Concat(DISTINCT CASE WHEN sv.rmvd = 0 THEN ' '||sv.CMPNION_CD ELSE '<span style=\"color:red; \">' || ' '||sv.CMPNION_CD|| '</span>' END),' , ','') , " 
from Table 

Ignoruj ​​zastąpić i WM_CONCAT jak to jest do wyświetlania wartości oddzielonych przecinkami. Fragment kodu właściwym jest

CASE WHEN sv.rmvd = 0 THEN ' '||sv.CMPNION_CD ELSE '<span style=\"color:red; \">' || ' '||sv.CMPNION_CD|| '</span>' END 

chcę mieć tag na podstawie warunku rmvd = 0 .. Ponieważ mam uciec = „false” W mojej, nie muszę uciekać moje tagi html w pytanie. Chodzi mi o to nie trzeba konwertować do < <> do > i ""

Należy również zauważyć, że ponieważ mam cudzysłowów«»w moim przedziale, muszę uciec raz, więc nie będzie kiedy uciekł dotrze

jestem coraz moje wyjście dowolnie -.? 8000778 w kolorze czerwonym

Powiązane problemy