. «Чистая» сборки может удалить «мертвую древесину», которая может быть оставлена лежащей рядом с предыдущими сборками, неудачными сборками, неполными сборками и другими проблемами сборки.
В общем случае среда IDE или сборка будет включать в себя некоторую форму «чистой» функции, но это может быть неправильно настроено (например, в ручном файле) или может завершиться неудачей (например, промежуточные или результирующие двоичные файлы - только).
После завершения «очистки» убедитесь, что «чистый» преуспел, и весь сгенерированный промежуточный файл (например, автоматический файл makefile) был успешно удален.
Этот процесс можно рассматривать как конечный вариант, но часто является хорошим первым шагом ; особенно если недавно был добавлен код, связанный с ошибкой (локально или из исходного репозитория).
Вы не можете использовать условный оператор ?:
в выражениях значения и действия. Выражение значения выдало бы PropertyNotWritableException
в форме submit, потому что синтаксис EL не представляет собой операцию записи, вместо этого это операция только для чтения. Выражение действия уже выбрало бы ELException: not a valid method expression
для загрузки страницы, потому что синтаксис EL не представляет собой выражение метода, а выражение значения.
Вам нужно решить его по-другому, а затем таким образом, чтобы вы могли полностью избавиться от условного оператора ?:
в выражениях значения и действия. Это может быть достигнуто несколькими способами:
globalFilter
, но методы прослушивания действий не используются. Я предлагаю переименовать их в filter()
и resetFilter()
. Затем вы можете извлечь абстрактный базовый класс из этих классов bean и использовать его в файле custom tag , например, следующим образом: <my:filter beanName="#{param.from eq 'TERMINAL' ? 'terminalsList' : 'merchantsList'}" />
, который реализован следующим образом (если предположить, что эти beans являются областями запроса): <h:inputText value="#{requestScope[beanName].globalFilter}" size="50" />
<h:commandButton value="Filter" actionListener="#{requestScope[beanName].filter}" />
<h:commandButton value="Reset" actionListener="#{requestScope[beanName].resetFilter}" />
(если ваш компонент находится в другой области, просто измените #{requestScope}
соответственно, например #{viewScope}
) <c:choose>
<c:when test="#{param.from eq 'TERMINAL'}">
<h:inputText value="#{terminalsList.globalFilter}" size="50" />
<h:commandButton value="Filter" actionListener="#{terminalsList.filterTerminals}" />
<h:commandButton value="Reset" actionListener="#{terminalsList.resetTerminalsFilter}" />
</c:when>
<c:otherwise>
<h:inputText value="#{merchantsList.globalFilter}" size="50" />
<h:commandButton value="Filter" actionListener="#{merchantsList.filterMerchants}" />
<h:commandButton value="Reset" actionListener="#{merchantsList.resetMerchantsFilter}" />
</c:otherwise>
</c:choose>