我面對這個問題了幾次,但看起來像我不知道如何解決這個...如果我使用HtmlPanelGroup
爲:HtmlPanelGroup - 結合 - H:樹panelGroup中深入
客戶端:
<h:panelGroup ... binding="#{myBean.myPanelGroup}">
</h:panelGroup>
輔助bean(S):
@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
PS的taglib.xml確實包含G1配置爲:
...
<tag>
<tag-name>aTag</tag-name>
<component>
<component-type>myPanel<component-type>
</component>
</tag>
...
編輯
或者h:panelGroup
這樣-s樹可能導致類似的問題:
客戶端:
<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
}
所以我的問題是... 什麼原因導致這種情況,以及如何解決這個問題,或者是否有解決方法?
我還不確定在JSF框架中div的樹深度是否有限制(h:panelGroup
)?如果不是如何處理它,因爲它很煩人;還是有更多的替代方法?
感謝
我真的堅持下去:S任何想法? – cbhogf