2012-05-09 28 views
13

Tôi đang sử dụng JSF 1.2<h: outputtext> in HTML như-là thay vì HTML thực tế

Tôi cố gắng để in văn bản sử dụng <h:outputtext>

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

Bây giờ biến này chứa văn bản bằng các thẻ html. <b>, <i> vv ...

Nhưng nội dung đó hiển thị nội dung vì nó thay vì đầu ra html in đậm hoặc in nghiêng thực.

Có cách nào để chúng tôi có thể thực hiện điều này <h:outputText> sao cho nó trả lời html không?

Trả lời

33

Bạn nên thiết lập trong h: thẻ outputText:

escape="false" 

Nhưng hãy nhớ rằng trộn "view" xây dựng (ví dụ, tạo ra một chuỗi với các thẻ HTML) giữa các trang xem JSF và cơ bản đậu là thực hành xấu. Tất cả "chế độ xem sản xuất" phải ở trong trang xem.

+0

tại sao chính xác nó là một thực tế xấu bạn có thể vui lòng tiếp tục xây dựng trên đó Thậm chí nếu tôi có * đầy đủ * kiểm soát đối với HTML được tạo? Mã số? – jpangamarca

+0

@jpangamarca với cùng lý do tại sao MVC là một phương pháp hay. Nó cho phép bạn thực hiện chế độ xem bằng cách sử dụng ngôn ngữ cụ thể xem (ví dụ: html, fragments, freemarker vv) và giữ cho mô hình không biết về các biểu diễn khác nhau. Đôi khi nó có thể thuận tiện hơn để tạo ra các khung nhìn cụ thể của mô hình và thực hiện nó trong Java, nhưng nói chung điều này là lý tưởng vì Java không thích hợp (và mã thường trông khá xấu xí) để mô tả các khung nhìn. Hy vọng nó có ý nghĩa. – Stef

+0

Cảm ơn @Stef. Khi tôi bị buộc phải xuất HTML trong h: outputText trong các ô của lưới, không thể tạo một facelet vì trang đã được thiết kế tồi và tôi không được phép thiết kế lại nó (kiểu CSS được áp dụng bởi id thành phần , kinh quá!), vì vậy các id sẽ được sao chép và trang sẽ phát nổ. Cảm ơn. – jpangamarca

6

Chỉ cần đặt để không thoát.

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

Tôi gặp vấn đề tương tự. Câu hỏi của tôi là here

trang xhtml tôi trông như thế -

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

associatedCode là nhận được giá trị từ một truy vấn SQL mà tôi muốn sử dụng thẻ HTML để có phong cách có điều kiện.

Đây là truy vấn SQL của tôi trông giống như:

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 

Ignore REPLACE và WM_CONCAT vì nó là để hiển thị các giá trị dấu phẩy tách ra. Các đoạn mã có liên quan là

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

Tôi muốn có thẻ dựa trên một điều kiện rmvd = 0 .. Kể từ khi, tôi phải thoát = "false" trong tôi, tôi không cần phải thoát khỏi thẻ html của tôi trong truy vấn. Những gì tôi có nghĩa là không cần phải chuyển đổi <-<> để > và ""

Cũng lưu ý rằng kể từ khi tôi có dấu ngoặc kép '' trong khoảng thời gian của tôi, tôi cần phải thoát khỏi nó một lần vì vậy nó sẽ không được thoát khi nó đạt

tôi nhận ra tôi như mong muốn -.? 8.000.778 màu đỏ

Các vấn đề liên quan