Как поместить «новую строку» в язык выражений JSP? - PullRequest
5 голосов
/ 15 декабря 2009

Каким было бы правильное выражение EL в JSP, чтобы иметь новую строку или HTML <br/>? Вот мой код, который не работает и отображается с '\ n' в тексте.

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}\n#{msg.TCW_SELECT_PART_ANALYSIS2}"/>

Ответы [ 4 ]

12 голосов
/ 15 декабря 2009

Поскольку вы хотите вывести <br />, просто выполните:

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}<br />#{msg.TCW_SELECT_PART_ANALYSIS2}" escape="false" />

Атрибут escape="false" существует для того, чтобы избежать <br /> экранирования HTML.

Вы можете даже отобразить два сообщения в отдельных тегах и поместить <br /> в виде простого текста между ними.

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}" />
<br />
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}" />

Если вы все еще используете JSF 1.1 или старше, вам нужно обернуть обычный HTML в <f:verbatim>, например:

<f:verbatim><br /></f:verbatim>
4 голосов
/ 15 декабря 2009

Если вы хотите новую строку в браузере, вам нужно поставить "<br/>" в текст Браузер интерпретирует его правильно. Он не понимает \ n.

2 голосов
/ 15 декабря 2009

Как насчет:

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}"/>
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}"/>

(т.е. разделить значение и поместить нужный символ между двумя)?

1 голос
/ 15 декабря 2009

Напишите пользовательскую функцию, которая вызывает этот фрагмент кода:

import java.util.StringTokenizer;

public final class CRLFToHTML {

    public String process(final String text) {

        if (text == null) {
            return null;
        }

        StringBuilder html = new StringBuilder();

        StringTokenizer st = new StringTokenizer(text, "\r\n", true);

        while (st.hasMoreTokens()) {
            String token = st.nextToken();

            if (token.equals("\n")) {
                html.append("<br/>");
            } else if (token.equals("\r")) {    
                // Do nothing    
            } else {    
                html.append(token);    
            }
        }

        return html.toString();

    }

}
...