Null-waarde uit ValueListBox-waarden verwijderen

Ik ben nieuw bij GWT. Ik schrijf een eenvoudig GWT-programma waarbij ik een keuzelijst moet gebruiken waarvoor ik een instantie van ValueListBox heb gebruikt. In die combinatie moet ik de cijfers van 1 tot 12 noteren die de maanden van een jaar vertegenwoordigen. Maar de combo voegt aan het einde de waarde null toe. Kan iemand me alstublieft helpen om die null waarde te verwijderen?

    final ValueListBox monthCombo = new ValueListBox(new Renderer() {

            @Override
            public String render(Integer object) {
                return String.valueOf(object);
            }

            @Override
            public void render(Integer object, Appendable appendable) throws IOException {
                if (object != null) {

                    String value = render(object);
                    appendable.append(value);
                }
            }
        });
    monthCombo.setAcceptableValues(getMonthList());
    monthCombo.setValue(1);

    private List getMonthList() {
        List list = new ArrayList();

        for (int i = 1; i <= 12; i++) {
            list.add(i);
        }

        return list;
    }

enter image description here

13

2 antwoord

Bel setValue vóór setAcceptableValues ​​.

De reden is dat de waarde null is wanneer u setAcceptableValues ​​ aanroept, en ValueListBox automatisch elke waarde toevoegt (over het algemeen doorgegeven aan setValue ) naar de lijst met acceptabele waarden (zodat de waarde daadwerkelijk set is en door de gebruiker kan worden geselecteerd en opnieuw kan worden geselecteerd als ze een andere waarde heeft geselecteerd en wil teruggaan naar het origineel een). Als u eerst setValue aanroept met een waarde die in de lijst met acceptabele waarden staat, wordt dit neveneffect teniet gedaan.

See http://code.google.com/p/google-web-toolkit/issues/detail?id=5477

24
toegevoegd
@ThomasBroyer: wat als we niet weten wat acceptabele waarden van tevoren zijn? Hoe zou dit moeten worden gebruikt als we alleen acceptabele waarden zouden willen, en geen nul of lege strings? UPDATE: Ik zie setAcceptableValues ​​(Collections.emptyList ()); wordt hiervoor aangeraden, hoewel dit niet werkte
toegevoegd de auteur Saad, de bron
Bedankt Thomas Broyer. Het werkte.
toegevoegd de auteur Manoj Shrestha, de bron
Ik citeerde zojuist je antwoord op een eerdere vergelijkbare vraag, lol :)
toegevoegd de auteur Adel Boutros, de bron
Ik heb dit geprobeerd en het werkt niet. Ik zie nog steeds nul ... het voelt echt als een fout, en geen functie. Ik run 2.5-rc1
toegevoegd de auteur Travis Webb, de bron

Citaat uit deze vraag :

Pas op voor de setAcceptableValues ​​voegt automatisch de huidige waarde toe   (geretourneerd door getValue en standaard naar null) naar de lijst (en setValue   voegt automatisch de waarde toe aan de lijst met acceptabele waarden als   nodig)

Probeer daarom de volgorde waarin u setValue oproept en asbare ontvangstwaarden in te stellen als volgt:

monthCombo.setValue(1);
monthCombo.setAcceptableValues(getMonthList());
2
toegevoegd
Heel erg bedankt, Adel Boutros. Het werkte prima nu ...
toegevoegd de auteur Manoj Shrestha, de bron