Grails отображает JSP как пустую страницу

У меня есть приложение Grails со страницей JSP (я портирую устаревшее приложение JSP). По какой-то причине страница отображается полностью пустой. Глядя на заголовки HTTP, я вижу, что это 200 с длиной содержимого 0.

HTTP/1.1 200 OK
Content-Language: en-US
Content-Type: text/html; charset=iso-8859-1
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: JSESSIONID=1sh9r73vqvukj;Path=/myGrailsApp
Content-Length: 0
Server: Jetty(6.1.12)

Страница представляет собой комбинацию HTML, тегов (${property}), JSP (<jsp:include>) и фрагментов короткого кода (<% code %>, да, я знаю, что это плохая идея). В файле журнала или консоли нет ничего, что указывало бы на ошибку. Неужели Grails каким-то образом скрывает исключение или ошибку?

Обновлено: проблема связана с тегом JSP <jsp:include/> include. Если я удалю все JSP-файлы, Grails выполнит рендеринг. Совместим ли Grails с JSP? Поскольку функциональность JSP обеспечивается веб-приложением (Jetty, Tomcat), я бы подумал, что да.

Обновлено: это происходит с Grails 1.0.4 и 1.1 beta 2 (1.1 утверждает, что добавлена ​​поддержка JSP)

К сожалению, теперь вы упоминаете бета-версию 1.1 и поддержку JSP (или нет). Думаю, мне нужно отредактировать свой ответ на ваш громкий вопрос.

Ed.T 30.12.2008 17:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
2 907
3

Ответы 3

Да, Grails совместим с JSP.

Совершенно пусто? Значит, если вы "покажете исходник", вы ничего не получите?

Если вы являетесь пользователем IntelliJ, вы можете установить подключаемый модуль Grails, установить точку останова и выполнить код, чтобы увидеть, что происходит.

Еще я бы проверил версию и стандарты JSTL. Они меняются в зависимости от версии используемого движка сервлета / JSP.

Ага, это совершенно пусто. Источник показа пуст (так как Content-Length равен 0).

Steve Kuo 30.12.2008 18:42

О боже. Тогда у меня ничего нет. Какой сервлет / механизм JSP вы используете, Jetty или Tomcat? Какая версия?

duffymo 31.12.2008 06:35

Jetty, какая бы версия ни была включена в Grails

Steve Kuo 09.04.2009 21:45

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

Обновлено: еще одна мысль - возможно, тег include работает, но в включаемом содержимом есть ошибка компиляции. Вы пробовали просто вернуть включенный контент?

Очевидно, к этому времени вы бы уже решили свою проблему, но это решение для других.

Сегодня я столкнулся с такой же проблемой:

Это фрагмент кода из main.gsp (ВЕРСИЯ)

<head>
    <g:layoutTitle default = "Grails" />
    <g:layoutHead />
    <g:javascript src = "jquery-1.6.1.min.js" />
</head>

А это мой index.gsp

<head>
    <title>${title}</title>
    <meta name = "layout" content = "main" />
</head>

Я передавал динамически созданный title из index.gsp и использовал макет main. title - обязательный атрибут html тега head. Так что по ошибке я передал title как значение null. и не отображалась ожидаемая страница.

Итак, решение:

  • Если вам нужен статический заголовок, не используйте тег title в файле gsp. В приведенном выше случае по умолчанию будет использоваться Grails в качестве заголовка.
  • Если вам нужен динамический заголовок, убедитесь, что это не значение null.

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

Другие вопросы по теме