如何在<h:inputTextarea>中进行操作

Aks*_*tha 5 java jsf

我在我的java bean中使用\n,并且控制台中的变量输出正确显示.虽然从bean获取此值到JSF \n似乎不起作用.......任何人都可以建议我如何使用JSF中的工作.

Bal*_*usC 17

最简单的方法是white-space: pre在包含您要保留换行符的文本的父元素上应用CSS \n.鉴于此CSS样式类:

.preformatted {
    white-space: pre;
}
Run Code Online (Sandbox Code Playgroud)

你可以按如下方式申请:

<div class="preformatted">#{bean.text}</div>
Run Code Online (Sandbox Code Playgroud)

要么

<h:panelGroup layout="block" styleClass="preformatted">#{bean.text}</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

要么

<h:outputText value="#{bean.text}" styleClass="preformatted" />
Run Code Online (Sandbox Code Playgroud)

等等

顺便说一下,这个样式属性也正是<textarea>默认使用的元素.您也可以通过设置disabled="true"或使用它并使其无法编辑readonly="true".

<h:inputTextarea value="#{bean.text}" disabled="true" />
Run Code Online (Sandbox Code Playgroud)

您当然也可以用\nHTML <br/>元素替换所有出现的内容.这样,您可以将其显示在不使用white-space: pre和/或不是<textarea>元素的元素中.其中一种方法是使用fn:replace().

<h:outputText value="#{fn:replace(bean.text,'\\n','&lt;br/&gt;')}" escape="false" />
Run Code Online (Sandbox Code Playgroud)

这只是IMO比这更丑陋white-space: pre.


Dan*_*iel 5

<br/>在将值发送给您之前,您应该替换所有\n <h:inputTextarea>.

Html用于<br/>换行,而不是像\ java一样.

此外,你应该添加escape="false"到你的<h:outputText(几乎肯定...).