Отображение цветов фона элементов selectOneMenu на основе перечисления - PullRequest
0 голосов
/ 20 октября 2018

Я видел этот ответ , но я не уверен, как отображать элементы в p: selectOneMenu с цветом фона, подкрепленным значениями из enum.

В раскрывающемся списке я хотел бы иметь элементыиз enum, каждый с разным цветом.

Я использую PrimeFaces 6.2, поэтому я не уверен, как использовать совет BalusC при переопределении SelectOneMenuRenderer - использовать пользовательский рендер.

Вот что я пробовал до сих пор.

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;
}    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...