統合されたダイアログが必要な会社用のコンポーネントを開発しようとしています。コンポーネントの作成は、ダイアログでポイントに到達するまでは簡単でした。使用したい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で、同じ問題を抱えているが解決策がない人からのエントリしか見つかりませんでした。
注:また、 keithstricが彼のブログで行っているように、SSJS を使用してボタンを介して標準<xe:dialog>
と<px:panel>
内部にいくつかのコンテンツを「注入」しようとしました。コード:<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>
、ダイアログの外側の標準では正常に機能しますが、ダイアログ自体またはその内部のパネルでは機能しません。