2016-07-30 35 views
0

I JSF-Komponente mich entschieden, aber ich bin immer :(Nullpointer Das Problem Code lautet:getAttributes() erhalten ("attribute") in UIComponent Konstruktor null zurück

@FacesComponent(value="mycomponent0") 
public class MyComponent extends HtmlPanelGroup{ 

MyComponent(){ 
    String a0=this.getAttributes().get("attr0"); 
} 

} 

der taglib.xml des Tags der attr0 enthält Attribut und die Tags Nutzung ist:

<abc:mycomponent attr0="helloworld"></abc:mycomponent> 

So ist meine Frage, was das Problem verursacht und wie man damit umgeht

Dank

?
+0

Lesen BalusC Antwort hier, zur Erklärung: https://stackoverflow.com/questions/30404268/cannot-get-custom-component -Attribut aus Backing-Bean – Pazura

Antwort

0

Ich denke, ich könnte herausfinden, wie man das NPE-Problem umgehen kann ...

Ich benutze nicht den Körper des Konstruktors, um Attribute zu erhalten, sondern Attribut in überschreiben encodeBegin-Methode;

@Override 
    public void encodeBegin(FacesContext context) throws IOException {  

     String id=this.getAttributes().get("id").toString(); 
     System.out.println("debug: attribute id="+id); 

     String color=this.getAttributes().get("attr0").toString(); 
     System.out.println("debug: attribute attr0="+attr0); 


     HtmlOutputLabel label0=new HtmlOutputLabel(); 
     label0.setValue("attribute attr0 value="+attr0); 
     this.getChildren().add(label0); 

     super.encodeBegin(context); 
    } 

Also es funktioniert und ich denke, dass ich mit dieser Lösung OK bin; Ich bin nicht sicher, ob es der optimale Weg ist, also teilen Sie bitte einige Schnipsel ...