在 JSF 1.2 中显示或隐藏 HTML DIV

Posted

技术标签:

【中文标题】在 JSF 1.2 中显示或隐藏 HTML DIV【英文标题】:Show or Hide HTML DIV in JSF 1.2 【发布时间】:2011-03-10 07:42:39 【问题描述】:

当 Apache My Faces JSF 1.2 实现在幕后呈现 html 页面时,是否甚至可以设置/编码将有条件地显示纯 HTML 表/DIV(不是 jsf 组件)的东西。当我搜索时,我看到了,使用 h:panelGroup 是一个解决方案,但我还没有尝试过,在这里发布任何更好的方法或方法。

这几乎就像想说 - 在 java 中编写一个 javascript 代码并在呈现 HTML 时注入它 - 有可能吗?

谢谢,

【问题讨论】:

【参考方案1】:

几种方法。

    使用<h:panelGroup layout="block">。它呈现一个 HTML <div> 元素。

    <h:panelGroup layout="block" rendered="#bean.condition">
        content
    </h:panelGroup>
    

    将 HTML &lt;div&gt; 元素包装在 &lt;h:panelGroup&gt; 中。如果没有任何客户端属性,如 idstyleClassonclick 等,&lt;h:panelGroup&gt; 将不会呈现任何内容。然而,有了它们,它会渲染一个 &lt;span&gt; 元素(如果 layout 设置为 block,则为 &lt;div&gt;)。

    <h:panelGroup rendered="#bean.condition">
        <div>content</div>
    </h:panelGroup>
    

    将 HTML &lt;div&gt; 元素包装在 &lt;f:verbatim&gt; 中。

    <f:verbatim rendered="#bean.condition">
        <div>content</div>
    </f:verbatim>
    

顺便说一句,MyFaces 生成 HTML 并不特别。 Mojarra JSF 实现也可以做到这一点。竞争对手 Struts2, Spring MVC, Wicket, Tapestry, etc..etc.. 还有。微软 ASP.NET MVC 也是。 php 也。事实上所有的服务器端语言。仅仅是因为网络浏览器不理解它们。它只理解 HTML/CSS/JS ;)

关于将 JavaScript 与 Java/JSP/JSF 混合使用,您可能会发现 this article 很有用。

【讨论】:

+1 以获得对服务器端语言的良好解释。我会尝试这些方法。谢谢。 @BalusC 先生,我喜欢您的第一种方法,但问题是 layout 在我的 jsp 文件中无法解决。可能是什么原因。我正在使用 jsf 1.2。谢谢! @Jam:它是在 JSF 1.2 中引入的。因此,您使用的是 JSF 1.1,或者您的 IDE 认为您使用的是 JSF 1.1。无论如何运行代码,在浏览器中检查生成的 HTML,它有效吗?那么你的IDE是错误的。它不工作吗?那么您显然实际上是在使用 JSF 1.1。 如果我们需要渲染的文本来自 EL 表达式并包含换行符怎么办?我们可以在&lt;h:panelGroup&gt; 组件中使用哪个元素来呈现带有换行符的文本? @jahroy:HTML 中的换行符根本不由 \n 字符表示。查看一般的 HTML 源代码,您会“看到”很多 \n 字符,但它们都不会在 Web 浏览器的 HTML 演示文稿中被这样解释。搜索一下,这个问题我已经回答过好几次了。

以上是关于在 JSF 1.2 中显示或隐藏 HTML DIV的主要内容,如果未能解决你的问题,请参考以下文章

检测 HTML5 视频是不是正在播放或暂停,并相应地显示或隐藏 Div

如何显示/隐藏 jsf 组件

显示和隐藏功能在 JSF 中不起作用

在 JSF 中动态显示和隐藏 <h1> [重复]

单击或触摸时切换 div 并在单击/触摸/向外滚动时隐藏

React js - 显示或隐藏 div