我目前正在使用一个h:selectOneRadio
来显示三个过滤选项。单击单选按钮时,将调用 JavaScript 函数来遍历下面的多个项目,以更改与display
所选过滤器选项相对应的 CSS 属性。这很好用,并且没有到服务器的往返行程(没有 POST 或 AJAX)。
这将使您了解当前的实现。
<script type="text/javascript">
function criteria_filterClick(radio)
{
radio.value == 'selected' ? criteria_showOnlySelected() :
radio.value == 'significant' ? criteria_showFirstOrSelected() :
criteria_showAll();
}
</script>
<h:selectOneRadio id="filter" onclick="criteria_filterClick(this); return true;"
value="#{searchBean.criterionFilter}">
<f:selectItem itemValue="selected" itemLabel="Selected"/>
<f:selectItem itemValue="significant" itemLabel="Basic"/>
<f:selectItem itemValue="all" itemLabel="All"/>
</h:selectOneRadio>
但是,我觉得拥有选项卡会比单选按钮更好的 UI 隐喻。我正在查看 PrimeFaces 的p:tabMenu
组件,其中包含p:menuitem
s。但是,这两个组件的文档似乎不支持直接的 JavaScript。
这是我开始的,但我不知道从那里去哪里:
<p:tabMenu activeIndex="#{searchBean.criterionFilter == 'selected' ? 0 : (searchBean.criterionFilter == 'significant' ? 1 : 2)}">
<p:menuitem value="Selected"/>
<p:menuitem value="Basic"/>
<p:menuitem value="All"/>
</p:tabMenu>
此时,没有任何功能(当您单击其中一个时,它甚至不会更改选项卡突出显示)。有没有办法将 JavaScript 添加到p:tabMenu
? 或者这不是正确的方法吗?