Задача Ant для генерации схемы ER от JPA/Hibernate аннотировала классы

Использование JSP-скриптлетов не одобряется практикой с десятилетия. Вы бы лучше избегали этого.

Если вы уже используете EL 2.2 или новее (Tomcat 7+, JBoss AS 6+, WildFly, GlassFish 3+ и т. Д.) С новой поддержкой выражений методов в форме ${instance.method()}, то вы можете просто использовать 100% EL для этого.

Сначала необходимо явно очистить модуль записи JSP с помощью JspWriter#flush() , чтобы все предыдущие выходные данные шаблона JSP действительно записывались в модуль записи ответа сервлета:

${pageContext.out.flush()}

Тогда вы можете просто передать ServletResponse#getWriter() на Throwable#printStackTrace() .

${exception.printStackTrace(pageContext.response.writer)}

Полный пример:

<%@page pageEncoding="UTF-8" isErrorPage="true" %>
...
${pageContext.out.flush()}${exception.printStackTrace(pageContext.response.writer)}

Если вы уже используете EL 3.0 (Tomcat 8+, WildFly, GlassFish 4+ и т. Д.), Вы даже можете сделать его одним выражением с помощью Новый оператор с запятой, который разделяет операторы EL:

<%@page pageEncoding="UTF-8" isErrorPage="true" %>
...
${pageContext.out.flush();exception.printStackTrace(pageContext.response.writer)}

Если по какой-то причине вы не можете использовать isErrorPage="true" (и, следовательно, неявный объект ${exception} недоступен), просто замените его на ${requestScope['javax.servlet.error.exception']} :

<%@page pageEncoding="UTF-8" %>
...
${pageContext.out.flush()}${requestScope['javax.servlet.error.exception'].printStackTrace(pageContext.response.writer)}

Если вы все еще не пользуетесь EL 2.2, тогда вам лучше всего создать собственную функцию EL. Подробности можно найти в . Каков хороший подход для пересылки исключения из сервлетов на страницу jsp?

Ниже приведен более полный пример страницы ошибки с более подробной информацией:

<%@page pageEncoding="UTF-8" isErrorPage="true" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
  • Exception:
  • Exception type:
  • Exception message:
  • Request URI:
  • Servlet name:
  • Status code:
  • Stack trace:
    ${pageContext.out.flush()}${exception.printStackTrace(pageContext.response.writer)}

8
задан anders.norgaard 19 June 2009 в 13:37
поделиться

2 ответа

Не совсем то, что вы ищете, но вы можете использовать API Viz , который автоматически создает UML-подобные диаграммы из иерархий классов и может быть дополнен тегами доклетов.

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

1
ответ дан 6 December 2019 в 00:58
поделиться

Хм, я нашел этот замечательный пост на сайте developerworks . Там автор, кажется, генерирует диаграммы сущностей из живой базы данных. Интересно, могу ли я выбрать «аннотированные классы -> live db (например, H2) -> диаграмма, сгенерированная SchemasSpy?»

И да, API Viz выглядит великолепно.

Я написал свое хакерское решение с помощью SchemaSpy .

2
ответ дан 6 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: