Pregunta

En Salesforce, si estoy unirse a un campo de texto en una página Visualforce, cuál es una buena manera de convertir los retornos de carro en el campo de texto en HTML <br/> etiquetas?

por ejemplo. a partir de algo como esto:

<apex:page standardController="Case">
  <apex:pageBlock title="Test">
      <p>{!case.Description}</p>
  </apex:pageBlock>                   
  <apex:detail relatedList="false" />
</apex:page>   

... Si la descripción es larga con una gran cantidad de retornos de carro, ¿cómo puedo HTML ify él?

(supongo que esto es una pregunta bastante fácil, y estoy seguro de que podría google, pero para llegar a la comunidad de Salesforce pasando aquí Calculo que necesitamos unas pocas preguntas fáciles.)

editar: (Bounty añadido a tratar de generar algo de emoción)

¿Fue útil?

Solución

Prueba esto:

<apex:outputField value="{!case.Description}"/>

Uso de campos de salida mantendrá el formateo automágicamente.

Otros consejos

Finalmente he logrado esto con un poco de código largo aliento.

En el controlador personalizado, añadir métodos para volver al campo después de buscar y reemplazar manualmente los saltos de línea en el campo y su sustitución por etiquetas <br/>:

public string getCaseDescriptionFormatted()
{
    Case c = this.loadCaseFromDatabaseOrWhatever();
    return lineBreaks(c.Description);   
}

private string lineBreaks(string inText)
{
   if (inText == null)
       return '';
   else
       return inText.replaceAll('<','(').replaceAll('>',')').replaceAll('\n','<br/>');
}

A continuación, en la página, el uso del ápice: outputText con el escape = "false":

<apex:outputText value="{!CaseDescriptionFormatted}" escape="false" />

Nota que el escape = "false" es necesaria para evitar que se escape Visualforce las etiquetas HTML. Esto también significa que usted se deja abierto a ataques de secuencias de comandos que mediante podrían hipotéticamente incorporados en los datos. Es por eso que el fn lineBreaks() en el controlador también sustituye a cualquier carácter < y >.

(Puede haber una mejor manera de hacer que la caja fuerte cuerda, sugerencias bienvenidas)

TehNrd anterior responde a la pregunta para mí.

Estoy desarrollando una vista con fichas de casos similares al ejemplo común para las cuentas. Cuando se trata de mostrar los comentarios de casos no se puede simplemente ponerlos en una lista relacionada y en su lugar se necesita para dar formato a mano. Utilizando los resultados ápice pageBlockTable estándar en una tabla apretada que no puede ser leído por los usuarios por lo que tenemos que hacer más mano de codificación. Este enfoque también me permite usar CSS para dar formato a los contenidos de la tabla. Pero el problema se formateando los comentarios de casos con saltos de línea y los mensajes de correo electrónico con formato. La respuesta de TehNrd funcionó a la perfección!

Para otros aquí es el código para mostrar una pestaña con CaseComment formato junto con una acción para editar el comentario.

<apex:tab label="Comments" name="Comments" id="tabComments">
    <apex:form >
        <apex:pageBlock id="commentsPageBlock">
            <apex:pageBlockButtons location="top">
                <apex:commandButton value="Toggle Sort" action="{!RequeryComments}" id="theButton" rerender="commentsPageBlock"></apex:commandButton>
            </apex:pageBlockButtons>
            <table border="0"  class="commentsTable">       
            <tr>
                <th class="commentsActionColumn">Action</th>
                <th class="commentBodyClass">Comments</th>
            </tr>
            <!-- get the case comments from the controller -->
            <apex:repeat value="{!comments}" var="c">
                <tr>
                <td class="commentsActionColumn">
                <!-- open the case comment for edit -->
                <apex:outputLink title="" value="/{!c.id}/e?parent_id={!c.parentId}&retURL=/apex/{!$CurrentPage.Name}%3Fid={!case.id}" style="font-weight:bold">Edit</apex:outputLink> 
                </td>
                <td>
                <!-- display the case comment formatted using the apex outputField -->
                <div class="commentTdClass">
                <apex:outputField value="{!c.commentbody}"></apex:outputField>
                </div>
                </td>
                </tr>
            </apex:repeat>
            </table>
        </apex:pageBlock>
    </apex:form>
</apex:tab>

¿Ha intentado utilizar outputText?

Si eso no voto trabajo para mi idea aquí: https: // sites.secure.force.com/ideaexchange/ideaView?id=08730000000H4XDAA0 Como tengo el mismo problema cuando se trata de volver a una página JSON.

Otras personas también quieren esta idea https://sites.secure .force.com / ideaexchange / ápice / ideaview? id = 08730000000BrhEAAS

Para mí, TehNrd clavó - yo estaba tratando de mostrar un caso de "Descripción" en una plantilla de correo electrónico de notificación Visualforce, y todos los CR / LF desapareció y las líneas / párrafos se ejecuta conseguir juntos. Por lo que es un valor OutputField totalmente fijada a él.

Se podría intentar algo como:

{!substitute(Case.Description, '\n', '<br/>')}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top