SORU
22 Kasım 2011, Salı


Ne kadar OLUMSUZLUK bir numaralama açılır menü yapmak

Benim sorum bir durum seçin, böylece selectOneMenu bir açılır yapmak istiyorum. F:selectİtem daha esnek eğer çeteleler sırası değişirse, ve eğer bu liste büyük olsaydı ne olacağını dikkate almak mümkün müdür? Ve bu daha iyi yapabilirim? Ve mümkün müdür "seçin" öğesini sorusu olan var mı? otomatik olarak

Numaralama sınıf

public enum Status {
    SUBMITTED,
    REJECTED,
    APPROVED
}

Soru varlık

@Enumerated(EnumType.STRING)
private Status status;

AKSARAY

        <div class="field">
            <h:outputLabel for="questionStatus" value="Status" />
            <h:selectOneMenu id="questionStatus" value="#{bean.question.status}" >
                <f:selectItem itemLabel="Submitted" itemValue="0" />
                <f:selectItem itemLabel="Rejected" itemValue="1" />
                <f:selectItem itemLabel="Approved" itemValue="2" />
            </h:selectOneMenu>
            <hr />
        </div>

CEVAP
22 Kasım 2011, Salı


AKSARAY, bu yüzden enum için yerleşik bir dönüştürücü vardır:

@ManagedBean
@ApplicationScoped
public class Data {

    public Status[] getStatuses() {
        return Status.values();
    }

}

ile

<h:selectOneMenu value="#{bean.question.status}" >
    <f:selectItems value="#{data.statuses}" />
</h:selectOneMenu>

(not: bu yana AKSARAY 2.0 gerek yok artık sağlamak SelectItem[] List<SelectItem> T[] List<T> kabul edilir olarak erişebilirsiniz geçerli öğe var öznitelik)

Eğer etiketleri de kontrol etmek istiyorsanız Status numaralama için bunları ekleyebilirsiniz:

public enum Status {

    SUBMITTED("Submitted"),
    REJECTED("Rejected"),
    APPROVED("Approved");

    private String label;

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

    public String getLabel() {
        return label;
    }

}

ile

<f:selectItems value="#{data.statuses}" var="status"
    itemValue="#{status}" itemLabel="#{status.label}" />

Veya, daha iyi, numaralama değeri yerelleştirilmiş kaynak paketinin bir özellik anahtar (EL 3.0 gerekli):

<f:selectItems value="#{data.statuses}" var="status"
    itemValue="#{status}" itemLabel="#{text['data.status.'  = status]}" />

bu özellikler bir dosya kaynak paketi ile ilgili olarak 24**

data.status.SUBMITTED = Submitted
data.status.REJECTED = Rejected
data.status.APPROVED = Approved

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • The Bad Tutorials

    The Bad Tuto

    6 EKİM 2009