我正在尝试为我的公司开发一个组件,它应该有一个集成的对话框。创建组件很容易,直到我用 Dialog 说到点子为止。我想com.ibm.xsp.extlib.component.dialog.UIDialog
为我的组件使用它,因为它有一些我想使用的不错的功能,所以用 ClientSideDojo 创建我自己的对话框不是一个选项。
Normaly 将组件添加到我使用的另一个组件component.getChildren().add(MyNewComp),
但当我尝试此代码时:
public class myComponentWithADialog extends UIComponentBase implements FacesComponent {
//...other Code...
public void buildContents(FacesContext context, FacesComponentBuilder builder)
throws FacesException {
UIDialog dialog = new UIDialog();
TypedUtil.getChildren(container).add(dialog);
dialog.setStyleClass("dlgUserPref");
dialog.setTitle("titelxyz");
dialog.setId("TagDialog");
UIPanelEx panel = new UIPanelEx();
panel.setTagName("div");
panel.setStyle("border:2px solid red;");
panel.setStyleClass("lotusList lotusTags lotusRelatedTags");
dialog.getChildren().add(panel);
this.getChildren.add(dialog);
}
//....
}
在我的浏览器中调用时,我的面板未显示在对话框内,对话框XSP.openDialog('dialogClientId')
显示但为空。
我已经尝试了其他几种方法,dialog.getPopupContent.getChildren().add()
但后来我得到了错误:javax.faces.component.UIPanel incompatible with com.ibm.xsp.extlib.component.dialog.UIDialog$PopupContent
。
我也试图在谷歌上找到一个解决方案,但我只在openNTF找到了一个有同样问题但没有任何解决方案的人的条目。
注意:我还尝试通过 SSJS 按钮将一些内容“注入”到标准<xe:dialog>
和<px:panel>
内部,就像keithstric在他的博客中所做的那样。代码:<xe:dialog>
var dialog:com.ibm.xsp.extlib.component.dialog.UIDialog =
getComponent('extlibdialog');
if(dialog.getChildren().size() > 0) {
dialog.getChildren().clear();
}
var TextField:com.ibm.xsp.component.xp.XspOutputText = new com.ibm.xsp.component.xp.XspOutputText();
TextField.setTitle("test");
TextField.setId("testTextField");
TextField.setValue("<p>This is the new Content</p>");
dialog.getChildren().add(TextField);
此代码适用于<xp:panel>
对话框外部的标准,但不适用于对话框本身或其中的面板。