Olá pessoal,
Estou desenvolvimendo um sistema em que pego um texto a partir de um campo CLOB e retorno o resultado dentro de uma página JSF. Contudo, o caracter de quebra de linha não está sendo preservado, de maneira que um texto com vários parágrafos fica como se fosse uma linha só. Na saída padrão System.out.println, a quebra de linha do texto é preservada, mas no h:outputText do JSF não é. Já tentei substituir os caracteres \n por tags , mas não funcionou. Alguém sabe resolver isso?
solucionei temporariamente o problema usando a tag h:inputTextArea com o atributo readonly, mas, caso exista, gostaria de fazer de outra forma.
Olá pessoal,
Encontrei a solução definitiva para o problema. Tenho que substituir na string todos os caracteres de retorno \n pela tag . Ademais, preciso setar para false a propriedade escape da tag outputText.
Olá davimcabral,
Cara vou te fala q tava com o msm problema… so q eu tentava colocar ou \n mas nao funcionava de jeito nenhum…
Agora deu certo… vlw
Lembrando que pra mim so funcionaou assim:
<br />
flw
tjca1
Dezembro 8, 2011, 12:48pm
#6
eis uma solucao… ex:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<p:growl id="growl" sticky="true" showDetail="true"/>
<p:layout style="min-width:900px;min-height:900px;" id="layout">
<p:layoutUnit position="north" resizable="true" size="15" minSize="40" maxSize="200">
</p:layoutUnit>
<p:layoutUnit position="center" visible="true">
<p:panel header="Questões SCJP" id="panel" style="width:75%;left: 5%">
<h:panelGrid border="0" style="text-align:left; width:100%">
<h:form>
<p:tabView>
<p:tab title="1">
<h:outputText value="Given:"/><br/>
<h:outputText value="11. public interface Status {"/><br/>
<h:outputText value="12. /* insert code here */ int MY_VALUE = 10;"/><br/>
<h:outputText value="13. }"/><br/>
<h:outputText value="Which three are valid on line 12? (Choose three.)"/><br/>
<h:outputText value="A. final"/><br/>
<h:outputText value="B. static"/><br/>
<h:outputText value="C. native"/><br/>
<h:outputText value="D. public"/><br/>
<h:outputText value="E. private"/><br/>
<h:outputText value="F. abstract"/><br/>
<h:outputText value="G. protected"/><br/>
</p:tab>
</p:tabView>
<h:panelGrid columns="2" border="0" style="text-align:left;" cellpadding="5">
<p:selectBooleanCheckbox value="A">
<!-- <p:ajax update="msg" listener="B"/> -->
</p:selectBooleanCheckbox>
<h:outputText value="A" />
<p:selectBooleanCheckbox value="B">
<!-- <p:ajax update="msg" listener="D"/> -->
</p:selectBooleanCheckbox>
<h:outputText value="B" />
<p:selectBooleanCheckbox value="C" >
<!-- <p:ajax update="msg" listener="E"/> -->
</p:selectBooleanCheckbox>
<h:outputText value="C"/>
<p:selectBooleanCheckbox value="E" >
<!-- <p:ajax update="msg" listener="E"/> -->
</p:selectBooleanCheckbox>
<h:outputText value="E"/>
<p:selectBooleanCheckbox value="F" >
<!-- <p:ajax update="msg" listener="E"/> -->
</p:selectBooleanCheckbox>
<h:outputText value="F"/>
</h:panelGrid>
</h:form>
<p:button onclick="" value="Confirmar"/>
</h:panelGrid>
</p:panel>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
em <h:outputText …> é só colocar a propriedade escape=“false” ,
parece que por default essa propriedade é true que diz que a tag html é interpretada pelo browser como texto…
Pra min funcionou apenas com a adição do display:block
<h:outputText style="font-weight: bold; display: block;" escape="false" value="Texto 1"/>
<h:outputText style="font-weight: bold; display: block;" value="Texto 2?"/>
<h:outputText style="font-weight: bold; display: block;" value="Texto 3"/>