2016-07-30 10 views
0

Я тестирование JSF компонент, но я получаю NullPointerException :(Код проблема заключается в:GetAttributes() получить ("ATTRIBUTENAME") в UIComponent конструктор возвращает нуль

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

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

} 

тэг taglib.xml содержит в attr0 атрибутов и использование тегов:

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

Так что мой вопрос, что вызывает вопрос и как справиться с этим

Благодаря

?
+0

Прочтите сообщение BalusC здесь, для пояснения: https://stackoverflow.com/questions/30404268/cannot-get-custom-component из-атрибута по-подложки-бобов – Pazura

ответ

0

Я думаю, я мог бы выяснить, как обходить проблему NPE ...

Я не использую тело конструктора для получения атрибутов, но получаю атрибут в избыточном коде encodeBegin;

@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); 
    } 

Поэтому он работает, и я думаю, что я в порядке с этим решением; Я не уверен, что это самый оптимальный способ, поэтому, пожалуйста, поделитесь некоторыми фрагментами ...