0

나는 다음과 같은 렌더링 된 HTML을 가지고, 내가 OmniFaces Components.findComponent와 JSF를 통해 빈에서 디스플레이 CSS를 확인하고 싶습니다 :이 PrimeFaces 확장 layoutPane (layoutPane PE)에 ID를 할당하기 때문에OmniFaces Components 유틸리티를 사용하여 XHTML 페이지에서 구성 요소의 HTML/CSS 속성 값을 가져 오는 방법은 무엇입니까?

<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"> 

UIComponent.

Accessing attributes passed to extended PrimeFaces component

내가 내 콩에 다음과 같은 한 : 다음에 BalusC의 답변에 따라

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

:

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); 
    } 
} 

서버 로그 항상 다음 포함 제발 조언. 감사.

답변

1

그건 불가능합니다. 명시 적으로보기 측의 구성 요소에 선언 만이 속성 UIComponent#getAttributes() 반환 :

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

또는 렌더링 프로그램 전이나시 :

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

이 생성 된 HTML 요소의 속성을 반환하지 않습니다 . 당신이하려는 일을 완전히 명확하지는 않지만 JavaScript를 사용하여 대신 클라이언트 측에서 작업을 수행하는 것을 고려할 수 있습니다.

+0

맞아, BalusC. 여기에 stackoverflow.com 및 google.com에 대한 검색 몇 가지 않았다, 연구 후이 배운 다음 내 질문에 대답 같은 시간에, 나는 이미 div.style.display 얻을 것이다 일부 자바 스크립트 작성하려고했습니다. PrimeFaces Extensions pe : layout에 열기, 닫기, 크기 조정을위한 이벤트가 있으므로 'west'layoutPane의 크기가 조정되면 p : ajax를 통해 제출하십시오. – Howard

+0

그래서, h : inputHidden이 p/ajax 이벤트 = "resize"가 발생했지만 div : inputHidden을 얻지 못하면 서버/bean에 div.style.display 값을 전달하는 솔루션을 함께 해킹하려고했습니다. p : ajax partialSubmit = "true 또는 false"로 지정해도 전혀 업데이트되지 않았습니다. 최근 jquery html() 메서드를 사용하여 내부 HTML을 가져 오거나 수정하는 방법을 배웠지 만 여기서는 최상의 솔루션이라고 생각하지 않습니다. – Howard

+0

Google 크롬 (패널이 F12 키로 열림)은 서쪽 레이아웃 창이 숨겨져 있지만 javascript를 통한 div.style.display 값이 어떤 이유로 든 신뢰할 수 없으며 스타일이 'display : none'임을 보여줍니다. 특정보기에 대해 서쪽 레이아웃 창을 렌더링 할 때 p : ajax event = "resize"가 '렌더링 됨'(조건부로) 될 때 동작 또는 서버 트립이 마음에 들었습니다. 어쨌든, 고마워, 그리고 모든 점에서 p : ajax event = "resize"를 사용하여 bean을 업데이트하는 것에 대해 걱정하지 않을 것입니다. :) – Howard