Я пытаюсь разработать компонент для моей компании, который должен иметь интегрированный диалог. Создание компонента было простым, пока я не наткнулся на диалоговое окно. Я хочу использовать com.ibm.xsp.extlib.component.dialog.UIDialog
для своего компонента, потому что у него есть несколько приятных функций, которые я хочу использовать, поэтому создание собственного диалога с ClientSideDojo не вариант.
Обычно при добавлении компонента в другой я использую 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
.
Также я пытался найти решение в Google, но нашел только запись по адресу openNTF от человека с такой же проблемой, но без какого-либо решения.
Примечание. Я также пытался «внедрить» некоторый контент в стандартный <xe:dialog>
и в <px:panel>
внутри <xe:dialog>
с помощью кнопки с SSJS, например keithstric делает в своем блоге а>. Код:
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>
вне диалогового окна, но не для самого диалогового окна или панели внутри него.