Как я могу получить возвращаемое значение из функции на странице .jsf adf 12c?

Я вызываю функцию при загрузке страницы (страница .jsf программно), и она работает нормально, но функция возвращает строковое значение (0 или 1). Я хочу показать или скрыть кнопки на основе возвращаемого значения на странице jsf.

Как я могу получить возвращаемое значение на странице .jsf?

Как я могу применить логику отображения и скрытия на основе возвращаемого значения?

Вот как я вызываю функцию при загрузке страницы

<f:metadata>
        <?audit suppress oracle.ide.xml.validation-error?>
        <f:event type="preRenderView" listener="#{backingBeanScope.backing_login.viewPrivilidge('Program')}"/>
</f:metadata>

Вот код кнопки, к которой я хочу применить логику

 <af:button text="Supplier" id="b4" inlineStyle="width:190px;"
            destination="Supplier_Setup.jsf" icon="#{resource['images:supplier.png']}"/> 

Я использую страницу .jsf в adf 12c.


person Ahmad Mirza    schedule 23.01.2019    source источник
comment
почему вы используете bean-компонент с областью видимости?   -  person Joe    schedule 24.01.2019
comment
Почему функция возвращает 0 или 1, а не логическое значение? Все пользователи этой функции смогут писать более качественный код, если она будет возвращать логическое значение. Необходимость проверки == 1 является ненадежным кодом, подверженным ошибкам и содержит неожиданные сложности.   -  person Joe    schedule 24.01.2019


Ответы (2)


Будьте осторожны с использованием Rendered. Rendered = false предотвращает создание какой-либо разметки для этого компонента. Это означает, что вы не можете просто установить rendered = true для компонента и ожидать, что он появится — этого не произойдет. В этом случае вам нужно обновить содержащий менеджер компоновки, чтобы он отобразился. Вы, вероятно, хотите, чтобы здесь Visible=false была создана разметка для компонента, а установка visible = true заставит компонент появиться.

Rendered часто зарезервирован для безопасных компонентов, где вам вообще не нужна разметка в исходном коде страницы.

person Joe    schedule 23.01.2019

только вам нужно вызвать функцию в атрибуте рендеринга этого тега, где вы хотите применить логику

<af:button text="Supplier" id="b4" inlineStyle="width:190px;"
            rendered="#{backingBeanScope.backing_login.viewPrivilidge('Program') == '1'}"           destination="Supplier_Setup.jsf" icon="#{resource['images:supplier.png']}"/> 

"#{backingBeanScope.backing_login.viewPrivilidge('Program') == '1'}" ........... если возвращаемое значение равно '1', то оно будет отображаться, иначе оно не будет отображаться

person Ahmad Mirza    schedule 23.01.2019