在从数据库中检索数据时如何编辑xsl以保持格式化?

时间:2017-05-23 07:50:38

标签: java oracle jsp xslt

我有以下xsl代码片段,它从db中检索数据,并在jsp页面上创建一个表:

<xsl:template match="Rows">
    <xsl:for-each select="child::*">
        <tr>
            <xsl:choose>
                <xsl:when test="position() mod 2 = 0">
                    <xsl:attribute name="class">LightRow</xsl:attribute>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:attribute name="class">DarkRow</xsl:attribute>
                </xsl:otherwise>
            </xsl:choose>
            <xsl:attribute name="id">row_<xsl:value-of select="Field[@ColumnName='ID']"/></xsl:attribute>
            <xsl:attribute name="OnMouseOver">mouseHandler(this.id, 'over');</xsl:attribute>
            <xsl:attribute name="OnMouseOut">mouseHandler(this.id, 'out');</xsl:attribute>
            <xsl:attribute name="onClick">formSubmitBase('<xsl:value-of select="Field[@ColumnName='ID']"/>');</xsl:attribute>
            <td>
                <xsl:value-of select="Field[@ColumnName='ID']"/>
                <xsl:text disable-output-escaping="yes">&amp;nbsp;&amp;nbsp;&amp;nbsp;</xsl:text>
            </td>
            <td>
                <xsl:value-of select="Field[@ColumnName='NAME']"/>
            </td>
            <td>
                <xsl:value-of select="Field[@ColumnName='STATUS']"/>
            </td>
            <td>
                <xsl:value-of select="Field[@ColumnName='DESCRIPTION']"/>
            </td>
        </tr>
    </xsl:for-each>
</xsl:template>

在JSP页面上,有一个textarea输入字段,用于收集描述数据,这里输入的描述应该保留新行很重要。我可以看到,在数据库中新的行格式化是可以的,如果我复制文本并将其粘贴(从plsql开发人员)到记事本,新行是可以的。但是在使用上面的代码将表填充到JSP页面之后,描述部分将丢失新的行字符。

使用xsl生成的此表位于输入字段所在的同一页上,单击1行时,将使用数据重新填充输入字段。问题是,在提交新行并单击它以重新填充输入字段后,新行将消失。

我正在使用oracle db。新行\r\n如何在那里展示?当描述插回textarea输入字段时,如何转换XSL描述部分以保留新行?

1 个答案:

答案 0 :(得分:0)

我在代码段中没有看到任何textarea,所以假设您正在谈论

<td>
    <xsl:value-of select="Field[@ColumnName='DESCRIPTION']"/>
</td>

然后将其更改为

<td>
    <pre style="white-space: pre;"><xsl:value-of select="Field[@ColumnName='DESCRIPTION']"/></pre>
</td>

或者

<td>
    <pre style="white-space: pre-wrap;"><xsl:value-of select="Field[@ColumnName='DESCRIPTION']"/></pre>
</td>

请参阅https://developer.mozilla.org/en-US/docs/Web/CSS/white-space?v=example