哪些jsf组件可以呈现div标签?


129

例如:h:inputText将呈现一个"input type='text'"。哪些jsf标签可以呈现"div"标签?


4
请牢记Facelets和JSF的较新版本,您可以随意将标准HTML标记与JSF标记混合在一起。
德鲁

好点,但是不幸的是,我仍然使用一个很旧的版本。
user101442

Answers:


234

您可以DIV使用创建组件<h:panelGroup/>。默认情况下,<h:panelGroup/>会在HTML代码中生成一个SPAN。

但是,如果指定layout="block",则该组件将DIV在生成的HTML代码中。

<h:panelGroup layout="block"/>

9
除非我使用mojarra-1.2_15实现向面板组添加样式或样式类,否则不会为我渲染。
詹姆斯·麦克马洪

3
附录,或设置ID属性。如果我不这样做,它只会显示在HTML中而没有周围的DIV标签。
詹姆斯·麦克马洪

1
我们不应该直接使用div标签本身吗?可能有什么问题?
拉贾特·古普塔

4
@Marcos当然,您可以使用div标记,但是在这种情况下,该组件将不会成为JSF组件树的一部分(即Java代码中不可用)。除此之外,您将无法使用Ajax直接刷新它(当然,除非您直接在某些JavaScript代码中进行刷新)。
罗曼·林索拉斯

1
答案只是事实的一半。请参见docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/…docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/…。重要的信息是,您还需要一个style或一个styleClass属性div来发生……这使这个故事绝对奇怪,恕我直言:一个平原<h:panelGroup layout="block">将呈现一个<span>?对我来说这没有意义。
卡乌

18

在JSF 2.2中,可以使用直通元素:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:jsf="http://xmlns.jcp.org/jsf">
    ...
    <div jsf:id="id1" />
    ...
</html>

要求是使用jsf名称空间在元素中至少具有一个属性。


14

除了<h:panelGroup>组件(这让我有些惊讶)之外,您还可以使用<f:verbatim>带有转义参数设置的false标记来生成所需的任何标记。例如:

<f:verbatim escape="true">
    <div id="blah"></div>
</f:verbatim>

请记住,它比panelGroup解决方案要优雅一些,因为如果您想用标签包装任何JSF代码,则必须同时为start和end标签生成此div标签。

另外,所有主要的UI框架都有一个divcomponent标签,或者您可以编写自己的标签。


4
我们不应该直接使用div标签本身吗?可能有什么问题?
拉贾特·古普塔


-3

我想我们可以使用逐字标记,因为在此标记中我们使用了任何HTML标记


认真吗 为什么?逐字标记是与jsp时代相关的。在多面体时代(现在是10年?),在这种情况下肯定是多余的。
库克尔杰(Kukeltje)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.