如何在JSP表达式语言中加入“新行”?

时间:2009-12-15 15:52:27

标签: java jsp jsf el

在JSP中EL表达式有一个新行或HTML <br/>是正确的吗? 这是我的代码不起作用,并在文本中使用'\ n'进行渲染。

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

5 个答案:

答案 0 :(得分:12)

由于您想输出<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或更早版本,则需要在<f:verbatim>中包含纯HTML,如:

<f:verbatim><br /></f:verbatim>

答案 1 :(得分:4)

如果您想在浏览器中添加新行,则需要在文本中添加“<br/>”。然后,浏览器将正确解释它。它不明白\ n。

答案 2 :(得分:2)

怎么样:

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

(即分割价值并将你想要的字符放在两者之间)?

答案 3 :(得分:1)

编写一个调用这段代码的自定义函数:

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();

    }

}

答案 4 :(得分:-1)

使用 </br> 代替 /n

即。在双引号 "" 内允许使用 </br>

例如

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