jstl c: если выполняется, когда false [duplicate]

Чтобы защитить вашу переменную, совместно используемую другим экземпляром, вам нужно создать новую переменную экземпляра каждый раз, когда вы создаете экземпляр. Когда вы объявляете переменную внутри класса, она является переменной класса и совместно используется всем экземпляром. Если вы хотите сделать это, например, необходимо использовать метод init для повторной инициализации переменной, ссылаясь на функцию экземпляра

init (). Эта специальная функция вызывается всякий раз, когда создается новый объект этого класса.

Этот тип функции также называется конструкторами в объектно-ориентированном программировании (ООП). Обычно мы используем его для инициализации всех переменных.

Например:

class example:
    list=[] #This is class variable shared by all instance
    def __init__(self):
        self.list = [] #This is instance variable referred to specific instance
16
задан BalusC 21 July 2015 в 22:17
поделиться

1 ответ

Теги JSTL оцениваются во время построения представления, а не во время визуализации представления. Вы можете визуализировать его следующим образом: всякий раз, когда дерево представлений создается впервые, все теги JSTL выполняются, и результат представляет собой представление только с компонентами JSF. Всякий раз, когда дерево представления получает визуализированное, все компоненты JSF выполняются, а результат - HTML. Итак: JSF + JSTL не работает синхронно, как вы ожидали от кодирования. Сначала JSTL запускается сверху вниз, передает результат в JSF, а затем очередь JSF запускается сверху вниз. Это может привести к неожиданным результатам в JSF-итерационных компонентах, таких как UIData, потому что данные строки (в вашем конкретном случае [объект f2]) недоступны, пока работает JSTL.

В двух словах: используйте JSTL для управления потоком построения дерева компонентов JSF. Используйте JSF для управления потоком генерации HTML-кода.

Здесь вы хотите использовать атрибут rendered.

<h:outputText value="Missing value" rendered="#{item.state ne 'Finish'}" />
<h:outputLink value="myLink" rendered="#{item.state eq 'Finish'}">
    <h:outputText value="Value = #{item.state}" />
</h:outputLink>

См. Также:

48
ответ дан Community 24 August 2018 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: