1
我有一個自定義容器組件,我想用這樣的:如何獲取自定義組件的父級?
<p:a>A
<p:a>B</p:a>
</p:a>
這應該產生這樣的標記:
<div>A
<div>B</div>
</div>
代碼組件如下。
public class TagA extends TagHandler {
Logger logger = Logger.getLogger(getClass().getName());
public TagA(TagConfig config) {
super(config);
}
public void apply(FaceletContext ctx, UIComponent parent)
throws IOException {
UIComponentBase c = new UIComponentBase() {
public void encodeBegin(FacesContext ctx) throws IOException {
//getParent() always returns UIViewRot
logger.info("Parent is: " + getParent().getClass().getName());
ResponseWriter w = ctx.getResponseWriter();
w.write("<div>");
super.encodeBegin(ctx);
}
public void encodeEnd(FacesContext ctx) throws IOException {
ResponseWriter w = ctx.getResponseWriter();
w.write("</div>");
super.encodeEnd(ctx);
}
// abstract method in base, must override
public String getFamily() {
return "com.mobiarch.nf";
}
};
parent.getChildren().add(c);
nextHandler.apply(ctx, parent);
}
}
不幸的是,這是呈現以下標記:
<div></div>A
<div></div>B
這種做法實際上是 「跆拳道?」。你爲什麼不使用普通的'UIComponent'? – BalusC
謝謝首席。我正在關注一些糟糕的教程。我會在這裏發佈我的解決方案。 – RajV