2013-10-27 3 views
0

у меня есть два пользовательских тегов mbar.tag и mitem.tag, которые используются следующим образом: - test.jspJSP скриптлета текст отображается как в Jsp выходе при использовании пользовательских тегов

<html> 
<body> 
<% String sArg = request.getParameter("someparam"); %> 
<mytags:mbar> 
    <mytags:mitem title="images/<%= sArg %>-first.png"/> 
    <mytags:mitem title="images/<%= sArg %>-second.png"/> 
</mytags:mbar> 
</body> 
</html> 

мбар тег имеет значение элемент MITEM тег принимает значение элемента со значением названия как тело элемента Они объявлены в файле TLD

Выход test.jsp является

<html> 
<body> 
<% String sArg = request.getParameter("someparam"); %> 
<div> 
    <div>images/**<%= sArg %>**-first.png</div> 
    <div>images/**<%= sArg %>**-second.png</div> 
</div> 
</body> 
</html> 

Результат содержит скрипт дословно, тогда как для меня требуется значение sArg. На экране не отображаются ошибки. Видя, что jsp-скрипты поддерживаются в jsp, я уверен, что это как-то связано с пользовательскими тегами. Что мне не хватает?

ответ

0

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

Используйте JSP EL:

<mytags:mitem title="images/${param.someparam}-first.png"/> 

И убедитесь, что тег заголовка вашего тега является declared as accepting runtime expressions, используя

<rtexprvalue>true</rtexprvalue> 

в объявлении атрибута файла TLD.

+0

Уверенный, jee5 tut также говорит, что обработчики тегов должны использоваться для пользовательских тегов, я просто экспериментировал со скриптами в пользовательских тегах. Я пробовал ваше решение, и оно работает хорошо. Благодарю. – techprism