如何在JSF页面中插入不间断空格字符 ?

91

我该如何在JSF页面中插入非换行空格字符,就像我在HTML中使用 一样? 在JSF中有类似的标签吗?


2
相关(技术上是重复的,但解释更好):解析错误 /page.xhtml: 错误追踪(行:42)实体“nbsp”被引用但未声明 - BalusC
10个回答

185

这样可以正常工作。

<h:outputText value="&#160;" />

7
为什么需要使用 <h:outputText> - alexander
1
确实,使用HTML数字而不是其他HTML快捷方式是正确的方法。 - Dnl

53

将HTML编号直接放入代码中对我起了作用:

&#160;

哦,我现在就想给出答案。很高兴,我没有忽略你的。 - alexander

19

如果您正在使用RichFaces库,您也可以使用标签rich:spacer,它将添加一个带有给定长度和高度的“不可见”图像。通常比添加大量的 更容易和美观。

在您想要显示空格的位置,只需添加:

<rich:spacer height="1" width="2" />

尽管这不是完全符合问题要求,但你的回答对我很有帮助(关于标题)。 - stacker
6
我也一样,这个标签在PrimeFaces中也存在:<p:spacer /> - Daniel Szalay

9

您还可以使用primefaces <p:spacer width="10" height="10" />来实现占位符


7
最终,如果仅使用&nbsp;未成功,您可以尝试这个方法...
<h:outputText value="& nbsp;" escape="false"/>

(像汤姆一样,我在&nbsp;之间添加了一个空格。)

我认为转义非常重要,这可能会导致不安全的解决方案。仅为 nbsp / 其他 HTML 元素放弃转义是棘手的。此外,“空格”可能会被遗忘。这相当冗长,而存在更短的替代方案。 - Dnl

4

我发现,如果我在页面中使用&nbsp;实体,解析器会抱怨。经过一番研究,我了解到如果在页面开头添加一个DOCTYPE声明,那么该实体是被允许的。我使用以下的DOCTYPE声明:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

这样做的一个副作用是,生成的代码(通过使用Web浏览器的“查看源代码”功能)实际上不包含&nbsp;实体。相反,它包括表示不间断空格的实际字符。虽然它可以工作,但这并不是我想要的。我仍在寻找一种方法,使解析器不替换实体为字符。
更多信息请参见:http://java.net/jira/browse/JAVASERVERFACES-1576

4
最简单的方法是:
<h:outputText value=" " />

在我看来,这并不是最简单的方法。 - alexander

3
您可以使用 primefaces 库。
 <p:spacer width="10" />

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Luca Detomi
@ihebiheb 加了 +6,别跟我说这是错的,因为我知道它是对的,你只会说些废话。 - Mohamed Aymen Charrada
你的回答被标记为过于简短,因为它缺乏细节。我建议你添加细节,让用户了解为什么你的解决方案可能是一个好的或者最好的解决方案。添加细节可以让用户将你的解决方案适应到稍微不同的问题上。 - Luca Detomi

1

仅补充一下选项:<h:outputText value="&amp;nbsp;" escape="false"/> 可以使用


我认为转义非常重要,这可能会导致不安全的解决方案。仅为了一个 nbsp / 或其他 HTML 元素而放弃转义是棘手的。此外,这种方法相当冗长,而有更短的替代方案。 - Dnl

0
不需要给出160,141也可以。对于值字段,请提供 value="&#141"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接