我沒有一個優雅的解決方案,但它可以完成。我假設JSF 2+ & Facelets VDL。
對於託管bean Foo
:
@ManagedBean @RequestScoped
public class Foo {
private List<SelectItem> fooList = Arrays.asList(
new SelectItem("value1", "label1", "description1"),
new SelectItem("value2", "label2", "description2"));
public List<SelectItem> getFooList() {
return fooList;
}
}
您可以使用JavaScript來設置DOM節點上的title
屬性:
<h:selectOneMenu binding="#{requestScope.fooSelectOne}">
<f:selectItems value="#{foo.fooList}" />
</h:selectOneMenu>
<script>
(function() {
var selectName = '#{requestScope.fooSelectOne.clientId}';
var kids = document.getElementsByName(selectName)[0]
.getElementsByTagName("option");
var index = 0;
<ui:repeat value="#{foo.fooList}" var="_opt">
kids[index++].title = '#{_opt.description}'; //TODO: escape this
</ui:repeat>
}());
</script>
「您在HTML中的純選項標籤中具有此屬性」 - 它的廣泛採用是相當近期的事情,但它僅支持據我所知,從IE9開始。如果還沒有,那麼javaserverfaces.java.net上的JSF jira中的功能請求可能不是一件壞事。 – Gimby 2013-01-07 09:26:16