0

我有以下呈现的 HTML:

<div id="ordersBrowseForm:ordersBrowseWestPane" class="ui-layout-west ui-widget-content ui-corner-all ui-layout-pane ui-layout-pane-west" data-combinedposition="west" style="position: absolute; margin: 0px; left: 0px; right: auto; top: 116px; bottom: 0px; height: 312px; z-index: 0; width: 198px; display: none; visibility: visible; "><div class="ui-widget-header ui-corner-top pe-layout-pane-header">

由于我为这个 PrimeFaces 扩展 layoutPane (pe:layoutPane) 分配了一个 ID,我想通过 OmniFaces Components.findComponent 和 JSF UIComponent 检查来自 bean 的显示 CSS。

基于 BalusC 对以下内容的回答:

访问传递给扩展 PrimeFaces 组件的属性

我的 bean 中有以下内容:

UIComponent westPane = (UIComponent) Components.findComponent("ordersBrowseForm:ordersBrowseWestPane");
if (westPane != null) {
    Map attrs = westPane.getAttributes();
    String paneStyle = (String) attrs.get("style");
    if (debug) {
        String log;
        log = "LayoutController.handleResize(): ordersBrowseForm:ordersBrowseWestPane style = " +
              (paneStyle != null ? paneStyle : "null");
        System.out.println(log);
    }
}

服务器日志始终包含以下内容:

INFO: LayoutController.handleResize(): ordersBrowseForm:ordersBrowseWestPane style = null

请指教。谢谢。

4

1 回答 1

1

那是不可能的。UIComponent#getAttributes()仅返回在视图端的组件上显式声明的属性:

<p:someComponent style="position: absolute;">

或在渲染之前或期间以编程方式:

component.getAttributes().put("style", "position: absolute;");

它不返回生成的 HTML 元素的属性。尚不完全清楚您要做什么,但您可能会考虑使用 JavaScript 在客户端执行任务。

于 2012-11-06T00:38:05.553 回答