对于<f:selectItem>
,没有rendered
属性。如何隐藏<f:selectItem>
下的特定<h:selectOneRadio>
?
<h:selectOneRadio id="radio1" styleClass="selectOneRadio" value="#{}" rendered="#{}">
<f:selectItem itemValue="ALL" itemLabel="#{ONE}" />
<f:selectItem itemValue="PRIVATE" itemLabel="#{TWO}" />
<f:selectItem itemValue="GROUP" itemLabel="#{THREE}" />
</h:selectOneRadio>
在上面的代码中,我想隐藏第二项。
答案 0 :(得分:3)
<f:selectItem>
是一个标记处理程序(在视图构建时评估),而不是JSF组件(在视图渲染时评估)。您只能使用其他标记处理程序显示/隐藏它,例如JSTL <c:if>
。
<h:selectOneRadio value="#{bean.selectedItem}">
<f:selectItem itemValue="ALL" itemLabel="#{ONE}" />
<c:if test="#{!bean.showPrivate}">
<f:selectItem itemValue="PRIVATE" itemLabel="#{TWO}" />
</c:if>
<f:selectItem itemValue="GROUP" itemLabel="#{THREE}" />
</h:selectOneRadio>
只有在#{bean}
或<h:dataTable>
之类的迭代JSF组件的视图渲染时间内准备好<ui:repeat>
时,上述内容才会起作用,你真的必须在反而是支持bean代码。
答案 1 :(得分:2)
您可以使用f:selectItems
。
例如:
<h:selectOneRadio id="radio1" styleClass="selectOneRadio" rendered="true" value="controller.value">
<f:selectItems value="#{controller.items}" />
</h:selectOneRadio >
这是类控制器:
public clss Controller(){
private List<SelectItem> items = new ArrayList<SelectItem>();
public Collection<SelectItem> getItems(){
if (items.isEmpty()){
createItems();
}
return this.items;
}
public private createItems(){
if (condition){ //Here you can hidden the selectItem
this.items.add(new SelectItem(value,label));
}
}
}
答案 2 :(得分:1)
您可以尝试将其包围在
中 <h:panelGrid rendered="">
h:selectOneRadio
</h:panelGrid >
编辑:
或使用
<h:panelGroup>
修改
这不是一个好主意,但我认为您可以通过代码冗余来实现,如下所示
<h:panelGroup rendered="#{}">
<h:selectOneRadio id="radio1" styleClass="selectOneRadio" rendered="true">
<f:selectItem itemValue="ALL" itemLabel="one" />
<f:selectItem itemValue="PRIVATE" itemLabel="two" />
<f:selectItem itemValue="GROUP" itemLabel="THREE" />
</h:selectOneRadio>
</h:panelGroup>
<h:panelGroup rendered="#{!}">
<h:selectOneRadio id="radio11" styleClass="selectOneRadio" rendered="true">
<f:selectItem itemValue="ALL" itemLabel="one" />
<f:selectItem itemValue="PRIVATE" itemLabel="two" />
</h:selectOneRadio>
</h:panelGroup>
答案 3 :(得分:0)
我无法理解标记/来源,但从标题中猜测,我会建议
$("a.selectOneRadio f.selectItem").hide()
应该做假设
1) selectOneRadio is the class name of the a tag.
2) selectItem is the class name of the f tag.
3) f is not a tag in HTML. So if `f` is also a class name, you would have to use `.f .selectItem`
如果可以,请在问题中提供一些细节。
答案 4 :(得分:0)
disabled
元素上还有一个f:selectItem
属性,如果满足您的需求。否则你将不得不像Michel Foucault建议的那样手动添加它们。