2011-06-09 55 views
1

我在jsp中嵌入了以下struts 2标记。这是在另一个迭代器内部,它反过来在一个HTML表格的td标签内。在OGNL中使用 显示为 而不是空格

<s:property value="#rule.value" /> 
<s:set var="blanks" value="''" /> 
<s:iterator value="(#rule.key.length()).{ #this }"> 
    <s:set var="blanks" value="%{#blanks + '&nbsp;'}" /> 
</s:iterator> 
<s:property value="#blanks" /> 

总体目标是呈现您在浏览器的同一行中看到的所有s:属性值。对于某些标签(如文本框),您可以更改主题属性,并且不会尝试在自己的行上打印所有内容。但无论如何,我需要在迭代器标签中的同一行上的所有内容。

所以我在这里要做的是建立一个nbsp的字符串。每次迭代此代码片段时,此类字符串的长度都会更改。当我运行这个时,迭代器执行正确的次数,但是我的输出是&nbsp;&nbsp;&nbsp; .....多次迭代循环。尽管我需要每个nbsp的html空间输出。最终,我需要td在其中包含一定数量的字符,以便该表格和单独的表格在屏幕格式化过程中同步。

回答

3

您忘记了escapeHtml

<s:property value="#blanks" escapeHtml="false" /> 

或只是

${blanks} 


escapeHtml / escape(已弃用) 默认是 true


+0

花了这么多时间看着设置标签和OGNL,我忽略了看输出标签,属性。但它正好在http://struts.apache.org/2.2.3/docs/property.html:escape/escapeHtml是属性的属性。好,谢谢 – demongolem 2011-06-10 14:42:14

2

我不太了解JSP标签,但我偶尔会遇到它们......你见过escapeXml="false"吗? (用于c:out标签)

+0

我会朝那个方向看。当然,EL表达式不能在struts 2标签中出现(如果可能的话,这将是解决方案),但我会在OGNL中寻找相应的东西。 – demongolem 2011-06-09 16:51:11

0

只需使用&nbsp;而不是&nbsp即可轻松进行格式设置,并在struts框架中随时随地提供空间,并避免太复杂。