【发布时间】:2011-11-11 20:17:45
【问题描述】:
我需要使用 jsf 2.0 自定义组件动态创建面板。面板中的控件将从 xml 动态读取并在选择相应对象时呈现(例如:如果选择了 Person,我应该呈现一个面板,该面板将具有与 person 相关的控件,例如:Person age field(inputtext),人出生日期(日历)等)。
我正在尝试从扩展 UIComponentBase 的组件类中呈现它。
ResponseWriter writer = Util.getResponseWriter(context);
//start the <table> tag
writer.startElement(Constants.STR_TABLE, this);
//start the <tr> tag
writer.startElement(Constants.STR_TR, this);
//start the <td> tag
writer.startElement(Constants.STR_TD, this);
//encode the button 1 component inside this <td>
encodeAllComponent(context, getMyPrimePanel());
// end the <td> tag
writer.endElement(Constants.STR_TD);
//end the <tr> tag
writer.endElement(Constants.STR_TR);
//end the <table> tag
writer.endElement(Constants.STR_TABLE);
//private variable to render a panel
private Panel myPrimePanel;
/**
* @return the myPrimePanel
*/
public Panel getMyPrimePanel() {
System.out.println("inside the panel get method------");
if (myPrimePanel.getChildCount() <= 1) {
System.out.println("inside the panel creation function");
InputText input = new InputText();
myPrimePanel.getChildren().add(input);
}
System.out.println("inside the panel get method-------------");
return myPrimePanel;
}
/**
* @param myPrimePanel the myPrimePanel to set
*/
public void setMyPrimePanel(Panel myPrimePanel) {
System.out.println("inside the panel get method-------------");
//initialize the button 1 component
this.myPrimePanel = myPrimePanel;
}
我就是这样做的。但我得到一个空指针异常。如何动态呈现具有定义控件的面板?
这就是我得到的 -
====将开始渲染==== 面板里面的get方法------ 2011 年 9 月 7 日上午 10:01:42 com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback 访问 严重:java.lang.NullPointerException
【问题讨论】:
-
检查异常的堆栈跟踪(在服务器日志中)。 NPE 必须有一个行号,例如“NullPointerException at line xy”。告诉我们它在您的代码中的哪一行。这将使我们更容易为您提供帮助。
-
感谢您的回复。但它没有显示任何行号。
标签: java jsf jsf-2 primefaces