JSF, outputText e quebra de linha

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.

up

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 :wink:

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"/>