我有以下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">&nbsp;&nbsp;&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描述部分以保留新行?
答案 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