2014-11-16 5 views
-2

У меня есть это в моей сущностиПолучение первого элемента набора в JSP

public class Contact implements java.io.Serializable { 
    private Set<Abonnement> abonnements = new HashSet<Abonnement>(0); 
    // .. 

в моем JSP я нужен только первый элемент, я не хочу, чтобы перебрать весь HashSet так я стараюсь это

${contact.abonnements[0]} 

, но я получаю эту ошибку:

javax.el.PropertyNotFoundException: Property '0' not found on type org.hibernate.collection.internal.PersistentSet 
+0

Символ 'Set' не заказанным так нет такой вещи, как «первый элемент». Вы должны использовать другую структуру данных, которая сохраняет порядок элементов в ней. – kryger

ответ

1

Я KNO ж что Set не упорядочены, но я уверен, что у меня будет только один элемент в моем Наборе порядок не важен Так что я могу получить доступ к первому элементу, как это:

<c:if test="${contact.abonnements.size() == 1 }"> 
     ${contact.abonnements.iterator().next()} 
</c:if> 
+0

Как указано [в документации] (https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#iterator()), элементы итератора * * возвращаются без особого порядка "*, чтобы вы могли увидеть другой элемент во время каждого исполнения. – kryger

+0

спасибо человеку за ваше объяснение, я не знал, что я мог бы увидеть другой элемент во время каждого исполнения, но в моем случае мой набор содержит только один элемент, поэтому я хочу только первый элемент;) – Youssef

+0

Если вы * знаете * там когда-либо будет только одним элементом, то, возможно, использование коллекции является излишним. Этот ответ не поможет никому, кто действительно хочет использовать «Набор». – kryger

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