Инструмент отладки, чтобы увидеть, какие фрагменты были включены в страницу JSF - PullRequest
0 голосов
/ 01 декабря 2011

По мере роста моего проекта JSF я организовал свои файлы в фрагменты и шаблоны.Кроме того, некоторые фрагменты имеют шаблоны фрагментов, чтобы их можно было использовать в дальнейшем.Однако это немного усложнило выяснение того, какие фрагменты используются для создания одной страницы (и в отличие от кода Java. Netbeans не может переходить от шаблона к шаблону, как это происходит между методами Java с помощью «Перейти к исходному тексту / реализации» и т. Д.),

Существует ли инструмент отладки, который может помочь увидеть, какие фрагменты были использованы для формирования текущей страницы?В идеале, я ищу что-то похожее на Visual Event для jQuery

Если такого инструмента не существует, позвольте мне объяснить, что я делаю в настоящее время, чтобы увидеть, можно ли его улучшить.Сначала я фиксирую параметр запроса отладки, чтобы включить и выключить его.Затем в каждом фрагменте у меня есть следующий фрагмент:

<ui:fragment rendered="#{authController.debug}">
       <div style="background:red">
           From siteTemplate.xhtml
            </div>
</ui:fragment>

Очевидно, что это далеко от идеала, поскольку мне приходится вводить имя файла фрагмента в каждом фрагменте.Было бы намного лучше, если бы я мог сделать это:

<ui:fragment rendered="#{authController.debug}">
<div style="background:red">
       #{Current_File_Name}}
</div>
</ui:fragment>

PS: У Django есть замечательная панель инструментов отладки, которая показывает используемые шаблоны, выпущенные SQL для создания текущей страницы.http://www.packtpub.com/article/django-debug-toolbar Есть что-нибудь подобное?Лучшее, что я видел, это FacesTrace, но развитие этого вопроса, похоже, застопорилось.

1 Ответ

2 голосов
/ 01 декабря 2011

Три возможности для вас: 1) Chrome имеет превосходный отладчик / консоль, и вы сможете легко отследить по идентификатору (это то, что я делаю для моих шаблонов / компонентов).

2) Выможете посмотреть «журнал» в Primefaces, если вы не используете Richfaces или тяжелую реализацию JQuery.Он действительно хорошо показывает события по мере их продвижения, поэтому у вас есть хорошее представление о том, что происходит.

3) Используйте составные компоненты вместо фрагментов - это то, к чему я переключился, и так как ониэто «библиотека», которой легче управлять и использовать повторно.Трассировка стека обычно показывает очень подробные ошибки.

В приведенном выше примере вместо:

<ui:fragment rendered="#{authController.debug}">
<div style="background:red">
       #{Current_File_Name}}
</div>
</ui:fragment>

Возможно, у меня есть библиотека "mine: redDiv"

<composite:interface>
    <composite:attribute name="value" type="java.lang.String"/>
</composite:interface>

<composite:implementation>          
      <div style="background:red">
       #{cc.attrs.value}
      </div>
</composite:implementation>

Я понимаю, что вы не пытаетесь создать красное поле, но этот компонент можно использовать в более широком процессе следующим образом:

<html
...
  xmlns:mine="http://java.sun.com/jsf/composite/mine"
>
...
<mine:redDiv value="Hello World"/>
...
</html>

Этот шаблон полностью исключает метод импорта «Фрагмент», заменяя егос многоразовыми компонентами.Переход моего проекта к этому шаблону сократил базовую часть кода примерно на 50%, и поддерживать его теперь стало намного проще.Для справки - это средний проект с очень «подходящим» состоянием, подразумевающий SessionScope и ViewScope в качестве основной области действия для bean-компонентов, и в основном это приложение CRUD.

Трудно сказать, что вы делаете из примера, но я думаю, у вас много файлов, и это сбивает с толку.Составные компоненты в основном предоставляют способ обойти эту проблему, упрощая повторное использование.

В ответ на ваш комментарий о Netbeans и следующем коде: если вы не привязаны к IDE, у Eclipse Web Tools есть ctrl-click навигация от html -> java и html -> html, что довольно полезно.В основном он оценивает язык выражения и ссылки, но экономит время, если у вас есть спагетти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...