什么jsf组件可以呈现div标签?

use*_*442 124 html jsf

例如:h:inputText将呈现一个"input type='text'".什么jsf标签可以呈现"div"标签?

Rom*_*las 225

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

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

<h:panelGroup layout="block"/>
Run Code Online (Sandbox Code Playgroud)

  • 除非我使用mojarra-1.2_15实现向面板组添加样式或样式类,否则不会为我呈现. (9认同)
  • @Marcos当然,你可以使用`div`标签,但在这种情况下,这个组件不会是JSF组件树的一部分(即在Java代码中不可用).除此之外,您将无法使用Ajax直接刷新它(当然,除非您直接在某些JavaScript代码中进行刷新). (4认同)
  • 附录,或设置ID属性.如果我不这样做,它只会显示在没有周围DIV标签的HTML中. (3认同)

mp3*_*415 15

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

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:jsf="http://xmlns.jcp.org/jsf">
    ...
    <div jsf:id="id1" />
    ...
</html>
Run Code Online (Sandbox Code Playgroud)

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


小智 13

除了<h:panelGroup>组件(这对我来说有点意外),您可以使用<f:verbatim>设置了escape参数的标签false来生成您想要的任何标记.例如:

<f:verbatim escape="true">
    <div id="blah"></div>
</f:verbatim>
Run Code Online (Sandbox Code Playgroud)

请记住,它比panelGroup解决方案更不优雅,因为如果要使用标记包装任何JSF代码,则必须为start和end标记生成此div标记.

或者,所有主要UI框架都有一个div组件标记,或者您可以编写自己的组件标记.

  • 难道我们不能直接使用div标签本身吗?可能有什么问题? (4认同)