ich einen Primefaces „SelectOneMenu“ mit Gegenständen haben bin versucht, die entweder ein „normales“ Etikett oder ein „bold“ Label haben. Ich habe 2 verschiedene Varianten ausprobiert, aber beide funktionieren nicht wie erwartet.<p: selectOneMenu> mit fett Etikett für einige Elemente
Variante 1:
<p:selectOneMenu id="menu" value="#{selected}">
<f:selectItems value="#{mySelectItems}"/>
</p:selectOneMenu>
public List<SelectItem> getMySelectItems() {
List<SelectItem> list = new ArrayList<SelectItem>();
for (...) {
SelectItem item = new SelectItem(value, label);
item.setEscape(false);
if (...)
item.setLabel("<b>" + item.getLabel() + "</b>");
list.add(item);
}
return list;
}
So kann ich einige der Elemente im Menü mit einem mutigen Etikett und einige mit einem normalen Etikett haben. Das Problem: Das Feld, das die aktuelle Auswahl zeigt, ist die Darstellung des Textes als „< b> ... </b>“. Der Text scheint nicht maskiert zu sein, aber es scheint, dass er einfach nicht fett dargestellt werden kann, da er sich in einem HTML-Label befindet. Ich weiß nicht, wie ich von dem „< b>“ loswerden könnte und „</b>“ in diesem Label, though.
Variante 2:
<p:selectOneMenu id="menu" value="#{selected}" var="myClass">
<f:selectItems value="#{myClasses}"/>
<p:column>
<h:outputText value="#{myClass.name}" styleClass="bold"/>
</p:column>
</p:selectOneMenu>
public List<MyClass> getMyClasses() {
List<MyClass> list = new ArrayList<MyClass>();
...
return list;
}
Bei dieser Variante I auch fett Etiketten für Einzelteile haben kann (alle von ihnen zur Zeit) im Menü. Das Problem ist: Der Text der aktuellen Auswahl zeigt nicht "myClass.getName()", sondern "myClass.toString(). Die Bezeichnungen im Menü sind korrekt. Gibt es eine Möglichkeit, dies zu beheben?
Wenn ich schreibe ...
<f:selectItems value="#{myClasses}" var="myVar" itemValue="#{myVar.value}" itemLabel="#{myVar.name}"/>
statt, dann ist es nicht die Einzelteile mehr im Menü als fett angezeigt werden, aber es wird mit getName() anstelle von toString() auf dem Gebiet der aktuellen Auswahl.
Weiß jemand, wie ich meine Ideen so entwickeln kann, wie ich möchte, dass sie funktionieren oder vielleicht eine bessere Idee haben, wie man das löst?
Vielen Dank im Voraus!