从某个中心点控制 Primefaces 对话框的位置属性

Controlling position attribute of a Primefaces Dialog from some central point

我发现这段代码在我们项目的左上角放置了一个 PrimeFaces 对话框:

<p:dialog styleClass="dialog-top-left" ...>

并在 .css 文件中:

.top-left-dialog {
  top: 10px !important;
  left: 10px !important; 
}

现在这显然是错误的(它阻止了对话框被拖动),你实际上应该这样做:

<p:dialog position="top, left" ...>

然而,使用 CSS 的不正确版本有一个很好的优势:我只需更改 CSS 即可更改所有具有 dialog-top-left class。有没有办法从某个中心点控制 position = 属性(例如 CSS 变体的 .css 文件)?

您可以为此创建一个 ApplicationFactory。在 ApplicationWrapper 中使用类似的东西:

@Override
public UIComponent createComponent(FacesContext context, String componentType, String rendererType) {
    final UIComponent component = super.createComponent(context, componentType, rendererType);

    if (component instanceof Dialog) {
        final Dialog dialog = (Dialog) component;
        dialog.setPosition("top, left");
    }

    return component;
}

如需完整示例,请访问链接的文档页面。