是否可以在JSF中为标记添加“title”属性,例如:
<f:selectItems value="#{foo.fooList}" title="{foo.fooDescription}"/>
生成的HTML:
<select>
<option value="foo1" title="description1">foo ex1</option>
<option value="foo2" title="description2">foo ex2</option>
</select>
答案 0 :(得分:5)
我没有优雅的解决方案,但可以做到。我假设JSF 2+&amp; 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>
答案 1 :(得分:1)
要在生成的title
上生成options
属性,您只需使用 passthrough 属性,如下所示:
<f:selectItems value="#{values}" p:title="Your title here"/>
答案 2 :(得分:0)
我认为对于f:selectItems
标记,没有可用的此类(title
)属性。您在option
中的普通HTML
标记中有此属性,但在jsf
中没有。我认为您应该使用普通select
代码而不是selectOneMenu
来获取title
值。
答案 3 :(得分:0)
假设您的<h:selectOneMenu
如下所示。
<h:form id="myForm">
<h:selectOneMenu id="myCombo">
<f:selectItems value="#{foo.fooList}"/>
</h:selectOneMenu>
</h:form>
现在在window.onload
您可以浏览option
并添加title
,如下所示
<script>
window.onload = function() {
var options = document.getElementById("myForm:myCombo").options;
for(var i = 0; i < options.length; i++) {
options[i].title = "description" + i;
}
}
</script>
答案 4 :(得分:0)
itemDescription属性不会出现在seam 2.2中。
最佳解决方案是使用javascript显示每个选择项的工具提示。
<script type="text\javascript">
function getTooltip(id){
var options = document.getElementById(id).options;
for(var i = 0; i < options.length; i++) {
options[i].title = "description" + i;
}
}
</script>
如果你的id是以动态或其他方式生成的,例如。
<rich:dataTable value="#{mybean.list}">
<h:selectOneMenu value="#{mybean.selectedValue}" onmouseover=getTooltip(this.id)>
<f:selectitems value="#{mybean.selectlist}">
</h:selectOneMenu>
</rich:datatable>
此解决方案适用于所有动态生成的ID以及简单的