在 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 <div>
元素包装在 <h:panelGroup>
中。如果没有任何客户端属性,如 id
、styleClass
、onclick
等,<h:panelGroup>
将不会呈现任何内容。然而,有了它们,它会渲染一个 <span>
元素(如果 layout
设置为 block
,则为 <div>
)。
<h:panelGroup rendered="#bean.condition">
<div>content</div>
</h:panelGroup>
将 HTML <div>
元素包装在 <f:verbatim>
中。
<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 表达式并包含换行符怎么办?我们可以在<h:panelGroup>
组件中使用哪个元素来呈现带有换行符的文本?
@jahroy:HTML 中的换行符根本不由 \n
字符表示。查看一般的 HTML 源代码,您会“看到”很多 \n
字符,但它们都不会在 Web 浏览器的 HTML 演示文稿中被这样解释。搜索一下,这个问题我已经回答过好几次了。以上是关于在 JSF 1.2 中显示或隐藏 HTML DIV的主要内容,如果未能解决你的问题,请参考以下文章