2013-11-27 3 views
0

Я использую сильно jstl во всех наших страницах jsp вместо jsp scriptlets, но я не смог найти то, что является альтернативой выражениям jsp в jstl.Альтернатива выражений jsp в jstl

У меня есть фрагмент кода

mycode.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<c:set var="appId" value="${requestScope.appId}"/> 
<h1>${appId}</h1> 
<BR/> 
<a href="/admin/loadData">Load Data</a> 
||&nbsp;&nbsp <a href="<%= UrlConstants.ADJUSTMENT_NOTE_LEDGER_SUGGEST_BOX%>">Load Demo</a> 

Могу ли я узнать, что является альтернативой для линии <% = UrlConstants.ADJUSTMENT_NOTE_LEDGER_SUGGEST_BOX%> в JSTL. здесь UrlConstants мой интерфейс, который используется объявляя некоторые URL констант

+1

токарных UrlConstants в надлежащий класс POJO с добытчиками для констант приходит на ум. – Gimby

+0

На самом деле я не хочу использовать этот интерфейс как pojo. – majji

ответ

0

отредактировал

Вы не можете сделать это с помощью стандартных JSTL.

Использование сценария, будь то строка <% =%> или более <% %> JSP проходит этап перевода страницы JSP, а затем скомпилируется в сервлет. Во время перевода инструкций в метод Scriptlet _jspService() вставляются таким же образом на веб-странице. Метод _jspService() Соответствует телу страницы JSP.

В вашем случае, это как породило строку:

out.write("<a href=\" + UrlConstants.ADJUSTMENT_NOTE_LEDGER_SUGGEST_BOX + "\" >Load Demo</a>"); 

Так это работает с скриптлетами. С JSTL немного отличается.

EL позволяет авторам авторов использовать выражения для динамического чтения данных приложений, хранящихся в компонентах JavaBeans, различных структурах данных и неявных объектах. Эти выражения оцениваются в соответствующее время и поддерживают немедленную и отложенную оценку. Немедленная оценка означает, что выражение оценивается, и результат возвращается, как только страница сначала отображается.

Отложенная оценка означает, что технология, использующая язык выражений, может использовать свой собственный механизм для оценки выражения через некоторое время в течение жизненного цикла страницы, когда это целесообразно. В случае технологии JavaServer Faces.

Все выражения, использующие синтаксис ${}, оцениваются немедленно, это делается ELResolver, ELContext и другими объектами. В центре EL-машины находится расширяемый класс ELResolver.

Класс, реализующий ELResolver, определяет, как разрешать выражения, относящиеся к определенному типу объекта или свойства. В терминах следующего выражения экземпляр BeanELResolver вызывается в первый раз, когда находит базовый объект, сотрудник, который является компонентом JavaBeans. Как только распознаватель находит объект, он снова вызывается для разрешения свойства, lName объекта employee.

${employee.lName} 

Унифицированный EL включает в себя набор стандартных реализаций резольвера: ArrayELResolver, BeanELResolver, ListELResolver, MapELResolver и ResourceBundleELResolver. JSP 2.1 предоставляет два EL-резольвера для обработки выражений, которые ссылаются на эти объекты: ImplicitObjectELResolver и ScopedAttributeELResolver.

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

Так, по умолчанию EL не оценивает постоянное значение требуемого режима.

Смотрите эту ссылку для получения более подробной информации: http://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html увидеть эту ссылку How to reference constants in EL? Там есть несколько вариантов, чтобы решить вашу проблему

+0

Спасибо за ваш ответ, но это не мой ожидаемый ответ на этот вопрос. Есть ли какая-либо альтернатива для выражения выше jsp (пожалуйста, перечитайте мой запрос). – majji

+0

Я сделал редактирование своего ответа. Надеюсь это поможет. –

+1

@majji: доступ к статическим полям класса невозможным с JSP EL, до версии 3 спецификации. Если вы используете контейнер Java EE 7, такой как Tomcat 8, это возможно, но не раньше. См. Http://stackoverflow.com/questions/20234337/why-am-i-not-able-to-find-static-methods-through-expression-language/20236571#20236571 –

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