在JSP中EL表达式有一个新行或HTML <br/>
是正确的吗?
这是我的代码不起作用,并在文本中使用'\ n'进行渲染。
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}\n#{msg.TCW_SELECT_PART_ANALYSIS2}"/>
答案 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}"/>