Afficher les articles selectOneMenu couleurs de fond basé sur ENUM

voix
0

Je l' ai vu cette réponse , mais je ne suis pas sûr comment afficher les éléments en p: selectOneMenu avec la couleur d'arrière - plan soutenu par des valeurs de ENUM.

Sur le menu déroulant, je voudrais avoir des éléments de ENUM, chacun avec une couleur différente.

J'utilise PrimeFaces 6.2 donc je ne suis pas sûr de savoir comment utiliser des conseils BalusC sur SelectOneMenuRenderer primordial - d'utiliser renderer personnalisé.

Voici ce que j'ai essayé jusqu'à présent.

index.xhtml

<h:body>        
<h:form>
    <h:panelGrid id=createPanelGrid columns=2>
        <p:outputLabel value=Color options: />
        <p:selectOneMenu value=#{colorBean.selectedColor} var=sc>
            <f:selectItem itemLabel=Select a color itemValue= />
            <f:selectItems value=#{colorBean.colorList} 
                           var=color 
                           itemLabel=#{color} 
                           itemValue=#{color} />
            <p:column>
                <div style=background-color: #{color};>
                    &nbsp;
                </div>                             
            </p:column>
            <p:column>#{sc}</p:column>
        </p:selectOneMenu>
    </h:panelGrid>
</h:form>
</h:body>

ColorBean.java

import java.io.Serializable;
import javax.inject.Named;
import javax.faces.view.ViewScoped;

@Named(colorBean)
@ViewScoped
public class ColorBean implements Serializable {

private String selectedColor = White;

public ColorBean() {
}

public ColorsEnum[] getColorList() {
    return ColorsEnum.values();
}

public String getSelectedColor() {
    return selectedColor;
}

public void setSelectedColor(String selectedColor) {
    this.selectedColor = selectedColor;
}
}

ColorsEnum.java

import java.util.ArrayList;
import java.util.List;

public enum ColorsEnum {
WHITE(White),
RED(Red),
ORANGE(Orange),
GREEN(Green),
BLUE(Blue);

private final String label;

private ColorsEnum(String label) {
    this.label = label;
}

public String getLabel() {
    return this.label;
}

public static final List<String> colorList() {
    List<String> colors = new ArrayList<>();
    colors.add(ColorsEnum.WHITE.label);
    colors.add(ColorsEnum.RED.label);
    colors.add(ColorsEnum.ORANGE.label);
    colors.add(ColorsEnum.GREEN.label);
    colors.add(ColorsEnum.BLUE.label);        
    return colors;
}    
}
Créé 20/10/2018 à 03:22
source utilisateur
Dans d'autres langues...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more