我多次面临这个问题,但似乎我不确定如何解决这个问题……如果我使用
HtmlPanelGroup
作为:
客户:
<h:panelGroup ... binding="#{myBean.myPanelGroup}">
</h:panelGroup>
背衬豆:
@ManagedBean(name="myPanelGroup")
@RequestScoped
public class G0 extends HtmlPanelGroup{
...
public void addComp(ActionEvent e){
HtmlCommandButton commandButton=new HtmlCommandButton();
commandButton.setValue("aValue");
G1 g1=new G1();
g1.addComp(commandButton);
this.getChildren().add(g1);
}
}
另一个对象:
@FacesComponent(value="myPanel")
public class G1 extends HtmlPanelGroup{
...
@PostConstruct
public void init(){this.setLayout("block");}
public void addComp(UIComponent c){this.getChildren().add(c);}//bare button only :(
}
由于某些原因,生成的HTML包含
光秃秃的
完全没有被G1(div)包围的命令按钮:P
p、 这是taglib。xml确实包含G1配置,如下所示:
...
<tag>
<tag-name>aTag</tag-name>
<component>
<component-type>myPanel<component-type>
</component>
</tag>
...
编辑
或
h:panelGroup
-这样的树可能会导致类似的问题:
<h:panelGroup ... binding="#{gBean.g}"/>
支持bean:
public class G extends HtmlPanelGroup{
...
HtmlPanelGroup g0;
HtmlPanelGroup g1;
HtmlPanelGroup g2;
@PostConstruct
public void init(){
g0=new HtmlPanelGroup();
g0.setStyleClass("g0");
g1=new HtmlPanelGroup();
g1.setStyleClass("g1");
g2=new HtmlPanelGroup();
g2.setStyleClass("g2");
g0.getChildren().add(g1);
g1.getChildren().add(g2);
this.getChildren().add(g0);
}
...
}
和bean:
@ManagedBean(name="gBean")
@RequestScoped
public class GBean {
...
private G g;
...
@PostConstruct
public void initGBean(){
g=new G();
}
public void addComp(ActionEvent e){
HtmlCommandButton c=new HtmlCommandButton();
c.setValue(""+Math.random());
this.g.getChildren().add(c);
}
//getters setters
}
所以我的问题是。。。
原因是什么,如何修复,或者有解决方法吗?
h: 小组
)JSF框架中的树深度?如果不是,如何解决它,因为它很烦人;还是有其他的选择?
谢谢