Announcement

Collapse
No announcement yet.

Merkwuerdig: "Ghost" Converter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Merkwuerdig: "Ghost" Converter

    JBoss 6 M5 (out of the box,)


    Ich habe ein Projekt mit JSF 2.0 Facelets. Darin benutze ich mehere EnumConverter Klassen um Enums direkt an die View zu binden. Z.B.


    Code:
    @FacesConverter(value="AusbildungsartConverter")
    public class AusbildungsartConverter extends EnumConverter {
    
    
        public AusbildungsartConverter() {
            super(Ausbildungsart.class);
        }
    }
    Ich benuetze sie in <h:selectOneMenu>
    und das funktioniert auch.

    Nachdem ich jedoch ein <h:inputText ohne Converter hinzugefügt habe, kann ich dort keinen freien Text eingeben. Auch nicht in einer ganz neuen Testseite:


    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets">
    
    
        <h:body>
            <h:form>
                <h:inputText id="fasel" value="#{berechnung.aez.fasel}" />
                <h:message for="fasel"/>
                <br />
                
                <h:commandButton value="Submit" action="submit()"/>
            </h:form>
        </h:body>
    </html>
    Wenn ich 'blubber' eingebe, bekomme ich den conversion error

    j_idt4:fasel: 'blubber' must be convertible to an enum from the enum that contains the constant 'blubber'.


    Managed Bean:

    Code:
    package beans;
    
    @ManagedBean(name="berechnung")
    @SessionScoped
    public class Berechnung {
    
     
    
        @EJB
        private BafoegRechner bafoegRechner;
        
        @EJB
        private AezDAO aezDAO;
        
        private AenderungszeitraumFlat aenderungszeitraumFlat = new AenderungszeitraumFlat();
        private BerechnungErgebnis berechnungErgebnis;
    
     
    
        private UnterhaltsberechtigterP unterhaltsberechtigter;
        
        public AenderungszeitraumFlat getAez() {
            return aenderungszeitraumFlat;
        }
    
     
    
        public void setAez(
                AenderungszeitraumFlat aenderungszeitraumFlat) {
            this.aenderungszeitraumFlat = aenderungszeitraumFlat;
    
        }
    
     
    
        public BerechnungErgebnis getErgebnis() {
            return berechnungErgebnis;
        }
    
     
    
        public void setErgebnis(BerechnungErgebnis berechnungErgebnis) {
            this.berechnungErgebnis = berechnungErgebnis;
    
        }
    
     
    
        public String doBerechnung() {
            Aenderungszeitraum aenderungszeitraum = this.aenderungszeitraumFlat.buildAenderungszeitraum();
            berechnungErgebnis = bafoegRechner.berechnneFoerderung(aenderungszeitraum);
            return "ergebnis.xhtml";
        }
        
        public void save() {
            aezDAO.saveAez(aenderungszeitraumFlat);
            aenderungszeitraumFlat = new AenderungszeitraumFlat();
        }
        
        public List<Long> getIds() {
            List<Long> ids = aezDAO.getIds();
            return ids;
        }
        
        public List<Description> getDescriptions() {
            List<Description> descriptions = aezDAO.getDescriptions();
            return descriptions;
        }
        
        
        /**
         * Drop Down Menü für Rechtliche Stellung Ausbildungstätte
         * @return
         */
        public SelectItem[] getRechtsStellungSelectOne() {
            SelectItem[] items = new SelectItem[RechtlicheStellungAusbildungsstaette.values().length];
            
            int i=0;
            for (RechtlicheStellungAusbildungsstaette rechtlicheStellungAusbildungsstaette : RechtlicheStellungAusbildungsstaette.values()) {
                items[i++] = new SelectItem(rechtlicheStellungAusbildungsstaette, rechtlicheStellungAusbildungsstaette.toString());
            }
            
            return items;
        }
        
    
         // More stuff like that
     }




    Code:
    @Entity
    @NamedQueries({
        @NamedQuery(name="selectIds", query="SELECT aez.id FROM AenderungszeitraumFlat aez"),
        @NamedQuery(name="selectDesc", query="SELECT NEW glue.Description(aez.id, aez.beschreibung) FROM AenderungszeitraumFlat aez"),
        @NamedQuery(name="selectDescWorkaround", query="SELECT aez.id, aez.beschreibung FROM AenderungszeitraumFlat aez")
    })
    
    
    public class AenderungszeitraumFlat {
        
        @Id @GeneratedValue
        private long id;
        
        private String beschreibung;
        private String fasel;
        
        
        
        
    
    
        public String getFasel() {
            return fasel;
        }
    
    
    
        public void setFasel(String fasel) {
            this.fasel = fasel;
    
        }
    
     
    }

    Ich habe keine faces-config.xml

    Hat irgendjemand eine Vorstellung was dies bewirken könnte?

    Danke


    Hans
Working...
X