web-dev-qa-db-ja.com

<h:outputtext>は、実際のHTMLではなくHTMLをそのまま印刷します

JSF1.2を使用しています

<h:outputtext>を使用してテキストを印刷しようとしています

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

これで、この変数にはHTMLタグ付きのテキストが含まれます。 <b><i>など...

ただし、実際の太字または斜体のhtml出力ではなく、コンテンツがそのまま表示されます。

これを<h:outputText>にしてHTML応答を返すようにする方法はありますか?

17
Ketan

H:outputTextタグで設定する必要があります。

escape="false"

ただし、JSFビューページと基になるBeanの間に「ビュー」構造を混在させる(つまり、HTMLタグを使用して文字列を作成する)ことは、ちょっと悪い習慣であることを忘れないでください。すべての「ビュープロダクション」はビューページにあるはずです。

41
javatutorial

逃げないように設定するだけです。

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

私は非常に似た問題を抱えていました。私の質問は ここ

私のxhtmlページは次のようになります-

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

associatedCodeは、HTMLタグを使用して条件付きスタイルを設定するSQLクエリから値を取得しています。

これが私のSQLクエリのようです:

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

カンマ区切りの値を表示するためのREPLACEとWM_CONCATは無視してください。関連するコードの一部は

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

Rmvd = 0の条件に基づいたタグが必要です。escape= "false"が含まれているため、クエリでhtmlタグをエスケープする必要はありません。つまり、<を<>に>および "から"に変換する必要がないということです。

また、スパンには二重引用符 ""が含まれているため、一度エスケープする必要があるため、に達してもエスケープされないことに注意してください。

必要に応じて出力を取得しています-赤い色の8000778

1
goyalshub1509