@PostConstruct-Methode wird nicht aufgerufen

Wollte ich @PostConstruct zur Initialisierung einer bean in meine webapp, aber ich kann nicht ankommen es zu wirken.

Habe ich neu erstellt, das problem in einem neuen Projekt und es immer noch nicht funktionieren.

Übersehe ich etwas offensichtliches hier? So weit wie ich kann sagen, dass mein init() Methode erfüllt alle Anforderungen aufgeführt, die in @PostConstruct API-Referenz.

MyBean.java:

@ManagedBean
@RequestScoped
public class MyBean {
    @ManagedProperty(value="15")
    private int number = 10;

    @PostConstruct
    public void init(){
        number = 20;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }
}

number.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">

<h:head>
    <title>Simple JSF Facelets page</title>
</h:head>

<h:body>
    Number = #{myBean.number}
</h:body>

</html>

Ich würde erwarten, dass Number = 20 aber ich bekomme Number = 15.

  • Sollte dies funktionieren. Welchen server verwendest du? Die JSF-version? Sie können hinzufügen, eine print-Anweisung in Ihrem init() Methode, um zu sehen, wenn es aufgerufen wird.
  • Ich bin mit glassfish3.1.2 mit Mojarra 2.1.6 (SNAPSHOT 20111206)
  • Seltsam. Es scheint der @ManagedProperty ist erkannt, aber die @ PostConstruct nicht. Wirklich seltsam.
  • SNAPSHOT das problem sein könnte. Möchten Sie vielleicht zu vermeiden, mit es Richtung die neueste version. Mojarra 2.2.5 (oder api, impl) ist heute verfügbar.
  • Es ist in der Tat ein bug. Sie sollten vermeiden, den snapshot-Versionen. Durch die Art und Weise, GlassFish 4, und als genannten oben, Mojarra 2.2+ verfügbar sind.
InformationsquelleAutor ddx | 2014-01-23
Schreibe einen Kommentar