Oracle ADF의 SelectOnechoice의 탭 색인을 추가하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1949061

  •  21-09-2019
  •  | 
  •  

문제

Oracle ADF의 SelectOnechoice의 탭 색인을 추가하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

불행히도 표준 JSF 수준에서 제어 할 수 없습니다. 적어도 표준 구성 요소와 렌더러가 아닙니다. 지정된 tabindex 적용됩니다 모두 생성 된 요소 (ADF는 아니지만 라디오 버튼이라고 생각합니다).

당신은 af:selectOneChoice 중독성 속성이 필요합니다 tabindexes 또는 따라서 쉼표로 된 인덱스 문자열을 받아들이고 이후에 생성 된 radiobuttons에 적용합니다.

해당 구성 요소의 ADF 문서를 참조하여 어떤 구성 요소 제품군이 속한 지, 어떤 렌더러가 사용중인 렌더러를 찾아야합니다. 한 번 알게되면 기본적으로 클래스를 만들어야합니다. extends 그것은 그것을 무시합니다 renderOption() 방법 (적어도 JSF 표준에서 정확히 해당 이름으로 호출됩니다. com.sun.faces.renderkit.html_basic.RadioRenderer 수업). 기본적으로 메소드 로직을 복사해야합니다 (ADF에 대해서는 확실하지 않지만 기본 JSF 구현은 오픈 소스입니다).

String tabindexes = (String) component.getAttributes().get("tabindexes");
if (tabindexes != null) {
    String[] tabindexItems = tabindexes.split("\\s*,\\s*");
    String indexKey = component.getClientId(context) + "_currentTabIndex";
    Integer index = (Integer) component.getAttributes().get(indexKey);
    if (index == null || index == tabindexItems.length) {
        index = 0; // Note this thus restarts at 0 if there are more selectitems than tabindexes. Just to be on the safe side.
    }
    String tabindex = tabindexItems[index];
    component.getAttributes().put(indexKey, ++index); // We need to save it for the next generated input element.
    writer.writeAttribute("tabindex", tabindex, "tabindex");
}

사용자 정의 렌더러를 선언하는 경우 faces-config.xml 다음과 같이

<render-kit>
    <renderer>
        <component-family>put here the component family of af:selectOneChoice</component-family>
        <renderer-type>put here the renderer type of af:selectOneChoice</renderer-type>
        <renderer-class>com.example.YourCustomRadioRenderer</renderer-class>
    </renderer>
</render-kit>

그런 다음 추가를 사용할 수 있습니다 tabindexes 다음과 같이 속성 :

<af:selectOneChoice .... >
    <f:attribute name="tabindexes" value="1,3,5,7,2,4,6,8" />

Bean 속성에서 (생성 된) 문자열로 얻을 수 있도록 EL을 넣을 수도 있습니다.

<af:selectOneChoice .... >
    <f:attribute name="tabindexes" value="#{bean.tabindexes}" />

이것이 새로운 통찰력을주기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top