Вычислять JSTL из сеансового компонента

#jsp #jstl #websphere

#jsp #jstl #websphere

Вопрос:

У меня есть сервлет, предоставляющий JSP, и я пытаюсь вывести пользовательские теги из строки из моего сессионного компонента. Пользовательские теги распечатываются без оценки. Если я добавлю свои пользовательские теги в JSP, это сработает как шарм, но я не могу динамически добавлять их из сессионного компонента. Я пробовал вывод прямо из сессионного компонента:

 <%= sessionBean.getTags() %>
  

и

 <% out.print(sessionBean.getTags()); %>
  

Я попытался создать пользовательский тег, который принимает строку в качестве своего атрибута:

 public class JSTLOut extends TagSupport {
   String value;
   public void setValue(String value) {
      this.value = value;
   }
   public int doStartTag() {
      try {
         JSPWriter out = pageContext.getOut();
         if (value != null) {
            out.print.(value);
         }
      catch(IOException ioe) {
         // TODO: handle
      }
      return(SKIP_BODY);
   }
}
  

Я пытался использовать Eval taglib

Этот taglib вызвал ошибку LinkageError, что, очевидно, не очень хорошо работает с websphere. Может ли кто-нибудь указать мне правильное направление?

Комментарии:

1. Каковы функциональные требования? В чем проблема, решение которой, по вашему мнению, заключается в этом?

2. Мне нужно динамически добавлять пользовательские теги из моей логики сервлета в мой JSP. Пользовательские теги генерируются из внутренних данных, однако, допустим, у меня есть тег, который вычисляется как <h1> hello</h1>, я получу: <html><body><mytag: hello /></body></html>

3. Почему бы вам не использовать шаблон JSP для этого? Или эти объявления тегов хранятся в HTML? Почему?

4. Мои объявления тегов находятся в .tld, я не думаю, что шаблон будет работать, потому что мне нужно, чтобы JSP был полностью универсальным, поскольку он может иметь множество конфигураций. Я потеряю удобство обслуживания, если у меня будет 40 разных шаблонов.

Ответ №1:

Я не уверен, будет ли это слишком утомительно или нет, но рассматривали ли вы возможность сохранения имен пользовательских тегов в таблице базы данных поиска? Затем вы могли бы запросить в таблице конкретное пользовательское имя тега и вставить любое пользовательское имя тега в динамический JSP, которое необходимо вернуть из сервлета.