2014-01-17 3 views
3

У меня есть x.jsp, который может обслуживаться как весь ответ или быть включенным в несколько других файлов jsp.Как узнать, включен ли JSP-файл другим?

Так как я могу узнать внутри x.jsp, если он включен в другой файл или нет?

+3

Почему вы хотите знать? Что вы будете делать со знанием? –

+0

вы можете попробовать получить доступ к значениям из включенного jsp из включенного. –

+0

Я уже подумал о каком-то обходном пути (например, используя jsp: param), но это не самый элегантный способ, так как мне нужно будет изменить все файлы, содержащие jsp. – Paolo

ответ

1

Вы можете проверить значение атрибута javax.servlet.include.request_uri на странице x.jsp. Если установлено, страница jsp была включена.

Дальнейшие подробности здесь: Java HttpServletRequest get URL in browsers URL bar

0

Вы можете иметь скрытое поле в «другие файлы», и если вы в том числе x.jsp вы должны установить значение для него, и в x.jsp, когда вы хотите знать, если его в том числе, вы должны проверить, что скрытые поля value == 'value'.

+1

Как JSP проверяет значение любого поля 'input'? –

0

Если x.jps имеет знание о включении, то это означает, что некоторые лучшие практики игнорируются:

  • MVC шаблон выброшен, потому что ваш x.jsp не только вида, но и своего рода контроллера ,
  • Возможно, поврежден Single responsibility principle. Попробуйте разделить x.jsp на y.jsp и z.jsp, или ввести переменную, которая будет содержать значение для соответствующего случая
  • Это, возможно, увеличивает coupling, потому что x.jsp нуждается в дополнительных данных о среде.

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

Пожалуйста, дайте нам более подробную информацию о вашем случае или перефразировать вопрос вы

Редактировать

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

+0

В принципе, лучше, если вызывающий абонент дает то, что он вызывает всю необходимую информацию, вместо того, чтобы позже связаться с вызывающим. Это верно и для написания чистого кода Java. Вы можете использовать программу grepwin для поиска и замены во всех JSP-файлах. –

+0

Архитектура (и вредные привычки) заставила нас уйти от «чистого» MVC. (Pls не говорит мне рефакторинг, это будет стоить сотни мужчин дней). Jsp-файлы не являются классами, а о связи и т. Д. Взгляните на тег useBean или переменные session/request. Каждый Jsp-файл больше похож на вызов процедуры, чем объект. Спасибо за ваш ответ, но это не полезно для меня. – Paolo

+0

Вопрос в том, как это сделать, а не если я должен это делать или нет. – Paolo

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