ADF selectOneвыберите, как отображать метку в элементах

Я работаю над АДФ. Мне нужно отображать текст справки при наведении мыши для каждого значения раскрывающегося списка. Я много боролся, но не нашел, что делать в слое модели. Наконец, я закончил играть со строковым выражением EL.

<af:table value="#{bindings.LetterUIConfig1.collectionModel}" rendered="false"
        width="98%" styleClass="AFStretchWidth" var="row"
        rows="#{bindings.LetterUIConfig1.rangeSize}"
        emptyText="#{bindings.LetterUIConfig1.viewable ? 'No data to display.' : 'Access Denied.'}"
        fetchSize="#{bindings.LetterUIConfig1.rangeSize}"
        rowBandingInterval="0" id="t1" columnStretching="column:c1"
        inlineStyle="border-style:hidden;" horizontalGridVisible="false"
        verticalGridVisible="false">
<af:column sortProperty="#{bindings.LetterUIConfig1.hints.Name.name}"
           sortable="false" id="c1" noWrap="false" headerText="">
  <af:panelFormLayout id="pfl1" labelWidth="40%" fieldWidth="60%"
                      maxColumns="1" labelAlignment="start">
    <af:panelLabelAndMessage label="#{row.Name}" id="plam1"
                             styleClass="alignLeft"
                             labelStyle="text-align: left;">
      <af:panelGroupLayout id="pgl1">

        <af:selectOneChoice value="#{row.bindings.Name.inputValue}"
                            label="#{row.bindings.Name.label}"
                            required="#{bindings.LetterUIConfig1.hints.Name.mandatory}"
                            shortDesc="#{bindings.LetterUIConfig1.hints.Name.tooltip}"
                            id="soc1">
            <af:forEach items="#{bindings.LetterAttributeLOV.rangeSet}" var="list">
                <af:selectItem id="si1" value="#{list.AttVal}"/>
          </af:forEach>
        </af:selectOneChoice>
        <af:selectBooleanCheckbox value="#{row.bindings.Name.inputValue}"
                                rendered="#{row.Type eq 'SBC'}"
                                label="#{row.bindings.Name.label}"
                                shortDesc="#{bindings.LetterUIConfig1.hints.Name.tooltip}"
                                id="sbc1"/>
      <af:selectManyCheckbox label="#{row.Name}" id="smc1"
                             rendered="#{row.Type eq 'SMC'}">
        <f:selectItems value="#{row.bindings.Name.items}" id="si2"/>
      </af:selectManyCheckbox>
      </af:panelGroupLayout>
    </af:panelLabelAndMessage>
  </af:panelFormLayout>
  <af:spacer id="s1" height="10"/>
</af:column>

My problem is select item is not displaying substring it is displaying only value. I did use valuePassThrough but no luck.


person user1111351    schedule 07.06.2017    source источник
comment
af:selectOneChoice в компоненте af:table? Вы использовали row.bindings.Name.label для метки, но bindings.DOCContractLetterUIConfig1.hints.Name.tooltip использовался для shortDesc. Не могли бы вы поделиться полной структурой panelCollection?   -  person KEYSAN    schedule 12.06.2017
comment
Обновленный вопрос с полным кодом.   -  person user1111351    schedule 12.06.2017
comment
какой выбранный элемент не показывает метку? bindings.LetterAttributeLOV.rangeSet или row.bindings.Name.items?   -  person KEYSAN    schedule 12.06.2017
comment
Выберите один вариант не отображается. Код здесь отсутствует, но у меня есть метка.   -  person user1111351    schedule 12.06.2017


Ответы (1)


Попробуйте определить метод для инициализации в itemList;

public List getSelectItemList(){
    ArrayList list = new ArrayList();
    Iterator<Object> iterator = resolveExpression("#{bind here your LOV}");
        while (iterator.hasNext()) {
          Object obj= iterator.next();
          list.add(new SelectItem(enterObjValue, enterObjValueLabel));
        }
        return list;
      }  

 public Object resolveExpression(String expression) {
            FacesContext fc = getFacesContext();
            ELContext elCtx = fc.getELContext();
            return fc.getApplication().getExpressionFactory().createValueExpression(elCtx, expression, Object.class).getValue(elCtx);
          }

и привяжите этот список к выбору одного компонента выбора.

 <af:selectOneChoice value="#{row.bindings.Name.inputValue}"
                        label="#{row.bindings.Name.label}"
                        required="#{bindings.LetterUIConfig1.hints.Name.mandatory}"
                        shortDesc="#{bindings.LetterUIConfig1.hints.Name.tooltip}"
                        id="soc1">
      <f:selectItems value="#{yourBean.selectItemList}"
                           id="sadsadsa"/>
    </af:selectOneChoice>
person KEYSAN    schedule 12.06.2017
comment
Я получил решение. Я использую привязку к дереву вместо LOV. и, проанализировав идентификатор компонента, можно отобразить текст справки с другим значением. - person user1111351; 23.11.2017