JSP get/setProperty

Durandir

Grünschnabel
Hi, ich habe nun Stunden damit zugebracht, aber ich finde keine Lösung. Ich wäre froh, wenn mir da jemand helfen könnte:

Wenn ich folgende Klasse habe:

public class Jaja {

int dd;

public int getDd() {
return dd;
}
public void setDd(int s) {
this.dd = s;
}

}

dann kann ich in der JSP:
<jsp:getProperty name="Bohne" property="dd"/>
machen und es klappt.

Wenn ich aber nun aus der Variablen "dd" "dD" mache, also sowas:

int dD;

public int getDD() {
return dD;
}
public void setDD(int s) {
this.dD = s;
}

dann kann ich nicht mehr mit
<jsp:getProperty name="Bohne" property="dD"/>
darauf zugreifen, sondern mit <jsp:getProperty name="Bohne" property="DD"/>


Ich dachte, die Variablen in der Bean sollten mit einem Kleinbuchstaben beginnen und die Getter/Setter beginnen dann hinter "get" mit einem Großbuchstaben. Warum klappt das denn nicht, wenn ich zuerst einen Kleinbuchstaben habe und dann einen großen Buchstaben hinterschicke.

Vielen Dank schon einmal im Voraus...

Gruss
Durandir
 
Hallo!

Ich denke, das ist so ein Sonderfall bei der Bean Namenskonvention...
Java:
/**
 * 
 */
package de.tutorials;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

/**
 * @author Tom
 * 
 */
public class PropertyExample {

    int dD;

    public int getDD() {
        return dD;
    }

    public void setDD(int dd) {
        dd = dd;
    }

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        BeanInfo beanInfo = Introspector.getBeanInfo(PropertyExample.class);
        PropertyDescriptor[] propertyDescriptors = beanInfo
                .getPropertyDescriptors();
        for (int i = 0; i < propertyDescriptors.length; i++) {
            PropertyDescriptor descriptor = propertyDescriptors[i];
            System.out.println(descriptor.getName() + " -> "
                    + descriptor.getWriteMethod());
        }
    }
}
Ausgabe:
Code:
DD -> public void de.tutorials.PropertyExample.setDD(int)
class -> null

Wie man sieht wird der Property Name hier nicht "richtig" ermittelt, so dass dieses Attribut nicht per Reflection gefunden werden kann...

Bennent man das Attribut jedoch in dd um (und passt due entsprechende get/set Methode an) so kann der Property Name korrekt ermittelt werden:
Java:
...
    int dd;

    public int getDd() {
        return dd;
    }

    public void setDd(int dd) {
        dd = dd;
    }
...

Ausgabe:
Code:
class -> null
dd -> public void de.tutorials.PropertyExample.setDd(int)

Gruß Tom
 
Besten Dank für die schnelle Antwort!

Ich muss morgen eine Klausur schreiben, aber ich denke mal, dass die sich auf die "normalen" Fälle bezieht. Irgendwie umsonst "einen kopf gemacht", aber immerhin auch was gelernt.

Danke nochmals...

Gruss
Durandir
 

Neue Beiträge

Zurück