2015-05-06 3 views
2

Я использую Primefaces 5.x (на myFaces 2.2.x) для своего пользовательского интерфейса, и я хочу отключить/деактивировать некоторые теги JSF, чтобы избежать ошибок.Как деактивировать тег JSF (Primefaces)

Есть ли черный список или белый список, который я могу использовать?

+0

Возможно, git pre-commit hook для 'grep' или' awk'? Просто предложение - я этого не пробовал. – DavidS

ответ

5

В стандартном JSF/PrimeFaces API такой вещи нет.

Quick'n'dirty обходной путь будет переопределение компонент регистрации в WebApp-х faces-config.xml, в котором вы установите класс компонента к не- UIComponent класса (он будет в конечном счете бросить ClassCastException на использование), или обычая UIComponent, который бросает например, IllegalArgumentException в своем конструкторе.

E.g. если вы хотите, чтобы избежать использования <p:selectOneMenu>component, который имеет component type of org.primefaces.component.SelectOneMenu:

<component> 
    <component-type>org.primefaces.component.SelectOneMenu</component-type> 
    <component-class>java.lang.Object</component-class> 
</component> 

Альтернативой будет manually visit the component tree после того как она строится и проверить каждый класс компонента против белого/черного списка в Set<Class<UIComponent>>.

Более чистая альтернатива будет override Application#createComponent(), чтобы проверить тип компонента на белый/черный список.

Еще одной альтернативой могло бы стать редактирование XML-файла PrimeLaces/config XML для удаления нежелательных компонентов и восстановления JAR.

+2

или ваш собственный предыдущий ответ: http://stackoverflow.com/questions/28560957/disable-components-in-a-large-project – Kukeltje

+0

@Kukeltje: ах, это объясняет дежавю, что у меня было! – BalusC

+0

Мне, но я должен был попробовать три разных поисковых запроса Google и нашел это непрямо – Kukeltje

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