Java 单击客户端是否显示/隐藏RichFaces组件?(没有AJAX)
我正在寻找一种显示/隐藏任意RichFaces组件的方法。在本例中,我有一个包含多行的Java 单击客户端是否显示/隐藏RichFaces组件?(没有AJAX),java,javascript,jsf,seam,richfaces,Java,Javascript,Jsf,Seam,Richfaces,我正在寻找一种显示/隐藏任意RichFaces组件的方法。在本例中,我有一个包含多行的。每一行都需要有自己独立的显示/隐藏链接,这样当您单击“显示详细信息”时,会发生两种情况: “显示详细信息”链接将重新呈现为“隐藏详细信息” 关联的详细信息列应变得可见(从rendered=“true”但style=“display:none;”“的状态开始) 如果不是绝对必要的话,我不想编写自己的JavaScript函数。我也不想让服务器端bean跟踪显示哪些detailColumns,然后通过AJAX重新呈
。每一行都需要有自己独立的显示/隐藏链接,这样当您单击“显示详细信息”时,会发生两种情况:
rendered=“true”
但style=“display:none;”“
的状态开始)<rich:column>
<a href="#" onclick="#{thisRow.detailsColumn}.show();" rendered="">Show details</a>
<a href="#" onclick="#{thisRow.detailsColumn}.hide();" rendered="">Hide details</a>
</rich:column>
<rich:column>
<h:outputText value="#{thisRow.someData}" />
</rich:column>
<rich:column id="detailsColumn" colspan="2" breakBefore="true">
<h:outputText value="#{thisRow.someMoreData}" />
</rich:column>
说到这里,您需要在JavaScript中从DOM中获取生成的HTML元素,然后在
块
和无
之间切换其CSS显示
属性。据我所知,RichFaces没有为此提供现成的脚本/工具,但基本上没有那么难:
function toggleDetails(link, show) {
var elementId = determineItSomehowBasedOnGenerated(link.id);
document.getElementById(elementId).style.display = (show ? 'block' : 'none');
}
与
show
隐藏
+1。您还可以使用内置的Richfaces jQueryrich:jQuery
轻松完成类似的操作。您是否检查了生成的HTML源代码?你没看到生成的ID中的模式吗?利用它!:)这不是火箭科学。分隔符上的子字符串、拆分、追加等:
。我无法详细回答这个问题,因为你的问题中缺少信息,而且我不做RichFaces,所以我无法从头顶上分辨它生成的HTML。我觉得这对你来说已经够直截了当了。尽管如此,你可以在中找到另一个例子:)在未来,只需发表评论,要求澄清一点,而不是一个月后带着一股疯狂的气味。我会毫不犹豫地用扩展的解释/示例更新答案,说明如何实现这一点:)
<h:outputLink onclick="toggleDetails(this, true); return false;">show</h:outputLink>
<h:outputLink onclick="toggleDetails(this, false); return false;">hide</h:outputLink>