2015-02-03 1 views
1

Я разрабатываю веб-приложение с использованием Spring MVC 3.2.4 (Spring Core 3.2.4) с jpa & спящий режим для back-end. И в настоящее время используется Tomcat v6.0 для тестирования.Включить JSP Пользовательский taglib для использования весенних бобов

У меня был случай, когда я создал пользовательский тег lib JSP (используя jsp-api 2.1.1 & servlet-api 2.5), который является выпадающим списком пользовательских поисков, я бы дал ему тип поиска, и он будет получать из БД элементы под этим типом для рендеринга в качестве элементов в списке.

Пользовательский класс TagLib в основном выглядит как-то похожее на это:

public class LookupsTag extends SimpleTagSupport { 
    @Autowired 
    private static LookupService lookupService; 
    private String type; 

    public void doTag() throws JspException, IOException { 
     List<Lookup> items = lookupService.findByType(getType()); 

     StringBuffer buff = new StringBuffer(); 
     buff.append("<select>"); 
     //...adding items... 
     buff.append("</select>"); 
     getJspContext().getOut().write(buff.toString()); 
    } 
    //getters and setters 
} 

И я создал файл TLD, соответственно, и все.

После того, как я попытке просмотреть страницу с помощью этого пользовательского тега, NullPointerException выбрасывается, потому что внутри doTag() способа lookupService экземпляр нуль.

Весна, похоже, не поддерживает пользовательские теги jsp. Есть ли способ обойти это, чтобы автоматически активировать служебный экземпляр? Или мне не хватает некоторых настроек весны?

Спасибо,

+0

Является ли ваш 'LookupsTag' определен как фасоль в конфигурации весны? –

+0

Нет, только требуемая конфигурация для любого нормального jsp taglib в проекте j2ee. – Mustafa

+0

LookupsTag не является и никогда не будет, управляемым компонентом Spring. Во всяком случае, что ты здесь делаешь? У SpringMVC уже есть теги, которые сделают это для вас: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-form.tld.html#spring-form.tld.select –

ответ