2013-06-30 2 views
1

Давайте рассмотрим простой сценарий тега HTML5. A <html> тег допускает только один <head> и один тег <body>. Предположим, что у нас есть HTMLUIComponent, HTMLHeadUIComponent, HTMLBodyUIComponent представляют собой каждый тег HTML, указанный выше, соответственно, как бы разрешить, чтобы HTMLHeadUIComponent и HTMLBodyUIComponent отображались только внутри HTMLUIComponent, а не в другом компоненте?Разрешение UIComponent визуализироваться внутри определенного UIComponent

ответ

1

Самый простой способ будет просто сделать что-то вроде этого в течение encodeBegin():

if (!(component.getParent() instanceof HTMLUIComponent)) { 
    throw new IllegalArgumentException("HTMLHeadUIComponent must have a parent of type HTMLUIComponent"); 
} 

Если вам нужно сделать это во время просмотра сборки (вместо точки зрения времени визуализации), то вы не можете пойти вокруг создания и добавление обработчика тега для компонента и проверка там в методе apply().

+0

Thanks BalusC! Не могли бы вы рассказать о своем последнем абзаце, если хотите? –

+0

Вот обработчик тегов Hello World: http://stackoverflow.com/a/15007720. Зарегистрируйте его как '' inside '' запись 'your.taglib.xml'. Или, если ваш конкретный вопрос на самом деле касается «времени на просмотр времени» и «время визуализации представления», перейдите к этому ответу: http://stackoverflow.com/a/3343681/. Причина в том, что исключение во время просмотра рендеринга может не обязательно заканчиваться на странице ошибки, поскольку существует риск того, что ответ уже совершен в этот момент (но он будет входить в журнал). Однако я бы не стал беспокоиться об этом, разработчик сразу увидит его во время разработки. – BalusC

+0

Большое спасибо! Это имело большой смысл ... :-) –

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