2015-09-26 6 views
0

Привет Я хочу скрыть компонент adf автоматически. У меня есть selectOneChoice, который содержит некоторое число (от 1 до 12). Пример, когда я выбираю 2, это показывает два поля автоматически без нажатия любой кнопки .. я использовал эту функцию, чтобы скрыть объявленную componenet, но только тогда, когда я нажмите кнопку ..Как скрыть/показать компонент adf автоматически

function enableField(actionEvent) { 

    var nameInputText = actionEvent.getSource().findComponent("soc1"); 
    nameInputText.setProperty("visible", true); 
    actionEvent.cancel(); 
    } 

я установить componement «SOC1 «visible = true, чем через функцию javascript, я меняю его.

Так проблема в том, как читать номер из selectonechoise и как напрямую установить компонент, не нажимая ни одной кнопки.

+0

Вы уверены, что хотите скрыть это с помощью javascript? Это будет намного проще с сервера. – Nagh

+0

Можете ли вы показать мне, как? – user3419507

ответ

0

Basicaly, для этого вам не нужны javascript-решение или любое программирование.

Вы должны установить атрибуты rendered (таким образом компонент не будет оказываться на той странице, на всех) и partialTriggers, что указывает на selectOneChoice компоненты для компонентов, которые вы хотите показать или скрыть. Также вам необходимо установить autoSubmit="true" для вашего компонента selectOneChoice.

<af:selectOneChoice id="soc1" autoSubmit="true" .../> 
<af:panelGroupLayout id="plg1" partialTriggers="soc1"> 
    <af:outputText id="ot1" rendered="#{bindings.lov.inputValue le 1}" inputValue="text1"/> 
</af:panelGroupLayout> 

Примечание: это не рабочий код, просто образец

Она будет работать следующим образом, на valueChange случае при значении компонента selectOneChoice представляется и partialRefresh пожары компонентов, которые имеют его в partialTriggers указанного. Атрибут rendered будет отображать или удалять компонент в зависимости от его EL-выражения. Компоненты, которые должны управляться, завернуты в другой компонент, чтобы убедиться, что PPR достигает его, когда они не отображаются.

1

Фактически Rendered не будет делать то, что вы хотите. Вместо этого вы хотите использовать свойство Visible. Rendered вызывает фактическую разметку для компонента, который не будет отображаться на странице, поэтому Partial Refresh не приведет к его появлению. Rendered зарезервировано, как правило, для скрытия безопасных элементов. Мы устанавливаем свойство render в false для элемента (ов), но затем обновляем родителя , содержащий компонент - обычно это менеджер компоновки - тогда он работает. Поэтому либо обновите менеджер компоновки, содержащий элемент, либо используйте Visible. Я продемонстрировал этот пример использования на прошлой неделе в классе, и он работает, как описано.

 Смежные вопросы

  • Нет связанных вопросов^_^