Как установить переменную в JSF? - PullRequest
4 голосов
/ 20 декабря 2011

Мой код здесь итерирует столбцы для каждой строки, и атрибут rendered вычисляется на каждой итерации, превышая testRule.

<p:dataTable ...>
    <p:column ...>
        ...
    </p:column>

    <p:column rendered="#{managedBean.testRule('rules.canDoActions')}">
        <!-- Action buttons -->
        <h:commandButton ...>
        <h:commandButton ...>
    </p:column>
</p:dataTable>

Чтобы повысить производительность, мне было интересно установить результат впеременная, но я не знаю, как ... Это могло бы выглядеть примерно так:

   <?:??? var="canDoActions" value="#{managedBean.testRule('rules.canDoActions')}">
   <p:dataTable ...>
        <p:column ...>
            ...
        </p:column>

        <p:column rendered="#{canDoActions}">
            <!-- Action buttons -->
            <h:commandButton ...>
            <h:commandButton ...>
        </p:column>
    </p:dataTable>

Кроме того, мне не разрешено использовать Core Tag Library , что означаето том, что <c:set ../> не может быть и речи.

В этой области как я могу установить переменную?Или, если это невозможно, что вы предлагаете решить для спектакля?

1 Ответ

5 голосов
/ 20 декабря 2011

Мне не разрешено использовать Core Tag Library, что означает, что <c:set ../> исключено

Тогда вы можете сохранить его на самом Бине и проверить, если этоNULL Calculate и установить значение или просто вернуть.

Например:

HashMap<String, Boolean> map;

public boolean testRule(String stringInput) {
   Boolean result = map.get(stringInput);

   if (result == null) {
       //calculate and set in map
   }

   return result;
}
...