2009-09-01 5 views
3

С помощью следующего кода:JSTL Еогеасп и IntelliSense

<c:forEach items="${customers}" var="customer"> 
    ${customer.name} 
</c:forEach> 

IntelliJ Idea способен сделать вывод о том, что тип «клиент» переменной в цикле ForEach имеет класс «Клиент» (при условии, что клиенты что-то вроде List < Customer>). Если я реорганизую класс java-клиента и изменю getName на getFullName, он изменит jstl на чтение $ {customer.fullName}.

Я загрузил источник standard.jar, и я не вижу, как это действительно можно сделать. Я знаю, что вы должны иметь возможность генерировать информацию о типе с помощью tei-класса, но класс TEI в Jakarta Taglibs этого не делает. Кто-нибудь знает, что мне не хватает?

(Я пытаюсь сделать свой Еогеасп, но не буду делать, если я не могу получить тот же уровень поддержки, но я просто не вижу, как это сделать ..)

+0

Возможно, это использует что-то очень низкотехнологичное. Возможно, это даже догадывается из имени переменной. Я бы действительно попытался изменить имена переменных и посмотреть, потеряется ли она ... – alex

+0

Это определенно намного умнее, но я озадачен тем, какая комбинация темных искусств используется для достижения этого. – krosenvold

+0

Эй, ребята, рефакторинг имени класса Customer Cust и скажите мне, что он делает с jstl. –

ответ

2

Я считаю, что intellij делает вывод о конкретных вещах, потому что он знает об общих библиотеках в JSF/Facelets/JSP. Я не думаю, что теглибы есть что-либо, чтобы указать это на IDE.

Я не уверен, что они предлагают какие-либо крючки для того, чтобы ваша функция поддерживала ваши собственные расширения тегов, но я в этом сомневаюсь.

2

Я думаю, что Idea имеет код, написанный специально для поддержки JSTL, вместо того, чтобы делать это динамически для любой библиотеки тегов на основе тега и TLD.

В вашем примере, как инициализируются «клиенты»? Если Idea может видеть, что метод, например, List<Customer> getCustomers(), вызывается где-то, он может отразить это Method и обнаружить, что параметр типа List равен Customer. В противном случае я не знаю, как это можно понять.

Возможно, в Idea есть крючки для обеспечения такой поддержки вашей собственной библиотеки тегов.

Смежные вопросы