Есть ли способ ограничить использование пользовательского тега, чтобы его можно было использовать только в определенном теге?

У меня есть тег <filter:filters> и тег <filter:filter>. Это пользовательские теги JSP. Есть ли способ указать, что тег <filter:filter> нельзя использовать изолированно и что его можно использовать только как дочерний элемент тега <filter:filters>?


person Vivin Paliath    schedule 01.09.2011    source источник


Ответы (1)


Похоже, что для этого не существует декларативного/ДВУ способа.

JSP 2.0 позволяет вам реализовать транслятор времени перевода, расширив класс javax.servlet.jsp.tagext.TagLibraryValidator и реализуя сообщение проверки.

Вы также можете сделать это во время выполнения с помощью метода SimpleTag.getParent() и создать исключение, если родитель имеет неправильный тип.

Это может выглядеть примерно так:

public void doTag() {
   if (!(getParent() instanceof Filters)) 
      throw new Exception("A filter can only be used inside a filters tag.");
}
person John Finlay    schedule 05.10.2011
comment
Я думаю, это единственный способ! Хотелось бы, чтобы был способ указать схему с помощью пользовательского XSD. - person Vivin Paliath; 07.10.2011