Тег f:verbatim перестает работать, когда находится внутри dataTable

Я разместил это на форуме пользователей PrimeFaces, но я думаю, что они слишком заняты, чтобы разобраться в этом, поэтому я решил попробовать здесь.

У меня есть строка на стороне сервера, в которой есть разметка, поэтому, когда я хочу, чтобы она отображалась, я делаю это:

            <p:panel>                    
                <f:verbatim>
                    #{daBean.markedUpString}
                </f:verbatim>
            </p:panel>

Это работает нормально, но не в том случае, если один и тот же тег используется внутри p:dataTable — как с корпусом p:panel, так и без него. Визуализируется элемент div class="ui-dt-c", в котором ничего нет. Для проверки, если я удалю тег f:verbatim, размеченный текст экранируется и отображается.

Я не знаю, следует ли считать это ошибкой или нет, но кто-нибудь знает обходной путь для этого? Это с PrimeFaces 3.0.M3.


person AlanObject    schedule 24.09.2011    source источник


Ответы (1)


Тег <f:verbatim> предназначен для хранения простого текста/HTML, а не компонентов JSF или выражений EL. Тег является пережитком эпохи JSF 1.0/1.1, когда было невозможно встроить обычный текст/HTML между компонентами JSF. Тег устарел в JSF2. Вам это больше не нужно.

Таким образом, вашим конкретным функциональным требованием является отображение некоторой строки HTML из управляемого компонента без экранирования. Для этого вы должны использовать <h:outputText> с escape="false".

<h:outputText value="#{daBean.markedUpString}" escape="false" />

Смотрите также:

person BalusC    schedule 24.09.2011