Една от основните черти на JSP версия 2.1 е езикът чрез който се осъществява достъп до JavaBean компоненти. Нарича се Unified Expression Language и представлява обединение на EL използван в JSP 2.0 и JSF. EL в JSP 2.0 позволява на авторите на страниците да достъпват методи на JavaBean компоненти. Но поради самата технология на JSP се поддържа единствено две фази чрез заявка/отговор модела с който страницата се извиква, изпълнява и се връща резултатът й. За разлика от JSP, JSF технологията предоставя възможност да се използва многофазен модел за обслужване на сложният интерфейс на приложенията.
Този модел позволява използването на валидатори и преобразуватели на данните на компонентите, препращане на тези данни към JavaBean обекти, обработване на събития на компонентите. За да се направят тези функционалности възможни при JSF се използва нов EL, който предоставя:
- отсрочено обработване на изрази
- възможност както да се четят, така и да се променят данни
- възможност да се извикват методи
UEL обединява двата езика, позволявайки:
- Динамично четене на данни, структури и обекти от JavaBean компоненти
- Възможност динамично да се пише в JavaBean компоненти в Java
- Извикване на публични и статични методи
- Динамична обработка на математически операции
UEL поддържа незабавна и отложена обработка на изразите. Незабавната веднага изпълнява израза и връща резултат при показване на страницата. Нейният синтаксис е от вида ${}, наследство от JSP2.0 . В скобите се поставя израза. Отложената обработка разширява динамичните способности на езика и е представена първо от JSF технологията. Използва следния синтаксис – #{}, отново мястото на израза е между скобите. Израза се обработва в зависимост от технологията и контекста, в който е използван. В UEL може да се използват и функции – палитрата зависи от използваната библиотека с тагове. За да се свърже дадена библиотека се използва следния синтаксис: <%@ taglib prefix=”f” uri=”/пътдофайла”%> Може да се дефинират и потребителски функции – това става в отделен клас, като функциите трябва да се маркирани като публични и статични. За да могат да се ползват в UEL трябва да се опишат във .tld файл. Например за следната функция:
package mypkg;
public class MyLocales {
…
public static boolean equals( String l1, String l2 ) {
return l1.equals(l2);
}
}
файлът трябва да съдържа следната сигнатура:
<function>
<name>equals</name>
<function-class>mypkg.MyLocales</function-class>
<function-signature>
boolean equals( java.lang.String,
java.lang.String )
</function-signature>
</function>
Примерно използване:
<c:when
test=”${f:equals(selectedLocaleString,
localeString)}” >
За да открие метод на JavaBean или за да изпълни математически израз, UEL в Java използва resolver механизъм за анализиране и решаване на изразите. Поддържа се смяна на resolver-a. Това дава възможност да се използват потребителски resolver-и, като класа на новия resolver трябва да разширява ELResolver класа, който се намира в avax.el пакета. След това трябва да се регистрира за използване в UEL изрази. Това може да стане по два начина – чрез контекст обзървър, или в конфигурационния файл на приложението. Например следните промени в конфигурационен файл ще добавят ColorELResolver, намиращ се в пакета webtier-sample:
<el-resolver>
webtier-sample.ColorELResolver
</el-resolver>
Няма подобни статии
Последни коментари