Frage

Ich versuche, beranutils zu verwenden, um mit einer Java -Bohne zu interagieren, ähnlich wie folgt:

public class Bean {
    private List<Integer> prices = new LinkedList<Integer>();

    public List<Integer> getPrices() {
        return prices;
    }
}

Laut dem Beanutils -Dokumentation, Beanutils unterstützt indizierte Eigenschaften, die sind Lists:

Als Erweiterung der JavaBeans -Spezifikation berücksichtigt das Beanutils -Paket jede Eigenschaft, deren zugrunde liegender Datentyp auch java.util.list (oder eine Implementierung der Liste) ist, die ebenfalls indiziert werden soll.

Nehmen wir jedoch an, ich versuche, so etwas wie Folgendes zu tun:

Bean bean = new Bean();

// Add nulls to make the list the correct size
bean.getPrices().add(null);
bean.getPrices().add(null);

BeanUtils.setProperty(bean, "prices[0]", 123);
PropertyUtils.setProperty(bean, "prices[1]", 456);

System.out.println("prices[0] = " + BeanUtils.getProperty(bean, "prices[0]"));
System.out.println("prices[1] = " + BeanUtils.getProperty(bean, "prices[1]"));

Die Ausgabe ist:

prices[0] = null
prices[1] = 456

Warum ist BeanUtils.setProperty() Die indizierte Eigenschaft kann während nicht festgelegt werden, während PropertyUtils.setProperty() kann? Unterstützt Beanutils keine Konvertierung von Typen für Objekte in Inside? Lists?

War es hilfreich?

Lösung

BeanUtils Benötigt eine Setter -Methode, damit es funktioniert. Dein Bean Die Klasse fehlt die Settermethode für prices, fügen Sie dies hinzu und machen Sie Ihren Code erneut, er sollte gut funktionieren:-

public void setPrices(List<Integer> prices) {
    this.prices = prices;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top