Conversione di un attributo RTF in attributo di testo semplice
Utilizzare API quali getLongDescription, getLongProposedSolution e getLongReason per recuperare contenuto RTF come longDescription, longProposedSolution, longReason, rispettivamente, con tag di markup.
Utilizzare API quali getDescription, getProposedSolution e getReason per recuperare i valori di testo normale di una descrizione, una soluzione proposta e un motivo.
Per convertire il contenuto RTF (con tag di markup) in semplice testo normale, utilizzare il codice seguente:
String richText = ChangeOrder2(Instance).getLongDescription()
HTMLText htmlAttr = HTMLText.newHTMLText(richText);
plainText = htmlAttr.getPlainText();
Conversione dell'attributo RTF in attributo di testo semplice per i package di replica
Poiché l'editor testo RTF è stato introdotto in Windchill 11.1 F000, qualsiasi package di oggetti di modifica esportato in Windchill 11.0 M030 escluderà gli attributi RTF come longDescription, longProposedSolution e longReason. Tuttavia, è possibile personalizzare il sistema d'origine per convertire gli attributi RTF esportati dall'origine in attributi di testo semplice. La personalizzazione rimuove gli attributi esistenti: description, proposedSolution e reason e converte gli attributi: longDescription in description, longReason in reason e longProposedSolution in proposedSolution. Di conseguenza, i valori RFT vengono convertiti in valori di testo semplice.
Per la personalizzazione, attenersi alla procedura descritta di seguito.
1. In base al tipo di oggetto di modifica, accedere al rispettivo file dal percorso: <WT_HOME>\codebase\registry\XSLRepo\11.0.M030:
◦ WTChangeActivity2.xsl
◦ WTChangeIssue.xsl
◦ WTChangeOrder2.xsl
◦ WTChangeRequest2.xsl
◦ WTVariance.xsl
|
In questo esempio viene utilizzato il file WTChangeIssue.xsl.
|
2. Aggiungere le seguenti righe di codice nel file.
a. Per rimuovere l'attributo description esistente:
<xsl:template match="WTChangeIssue/description"></xsl:template>
b. Per sostituire l'attribuito longDescription con description:
<xsl:template match="WTChangeIssue/longDescription">
<description>
<xsl:call-template name="plainTextFilter" />
</description>
</xsl:template>
|
Il codice chiama anche un modello XSL denominato plainTextFilter, che viene definito successivamente.
|
c. Per importare il modello plainTextFilter:
<xsl:import href="plainTextFilter.xsl" />
3. Creare un file denominato plainTextFilter.xsl nella posizione <WT_HOME>\codebase\registry\XSLRepo\11.0.M030 e aggiungere le righe di codice indicate di seguito nel file:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:filter="java:com.custom.text.conversion.PlainTextConverter" >
<xsl:template name="plainTextFilter">
<xsl:value-of select="filter:convertToPlainText(.)" disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
Questo chiama il metodo convertToPlainText di una classe personalizzata com.custom.text.conversion.PlainTextConverter. Questo metodo contiene il valore stringa di testo RTF come parametro di input e restituisce il valore stringa di testo semplice.
4. Creare una classe denominata PlainTextConverter per definire la classe personalizzata specificata in precedenza.
package com.custom.text.conversion;
import org.apache.commons.lang.StringEscapeUtils;
import com.ptc.core.richtext.HTMLText;
public class PlainTextConverter {
public static String convertToPlainText(String rawText) {
HTMLText htmlAttr;
String plainText = " ((null))";
try {
if (null != rawText && !rawText.isEmpty()) {
htmlAttr = HTMLText.newHTMLText(rawText);
plainText = htmlAttr.getPlainText();
plainText = StringEscapeUtils.escapeXml(plainText);
}
} catch (Exception exp) {
exp.printStackTrace();
}
return plainText;
}
}
|
La classe deve essere disponibile nel classpath di Windchill; per esempio, <windchill_home>\codebase\com\custom\text\conversion.
|
Dopo aver completato i passi sopra indicati, il package creato per Windchill 11.0 M030 contiene gli attributi description, proposedSolution e reason con valori di testo semplice convertiti da RFT.
Ripetere il passo 2 per tutti gli oggetti di modifica e gli attributi RTF che si desidera convertire.