2011-09-19 3 views
2

나는이 응용 프로그램을 통해 다양한 도메인 개체에서 참조하는 연락처 목록을 보유하고 콩이있는 응용 프로그램 :JSF 2 ManagedProperty에서 Java Collection 항목을 참조하는 방법은 무엇입니까?

@ManagedBean 
@SessionScoped 
public class ContactHolder implements Serializable { 
    private ArrayList<Contact> contactsList; 
    //getters and setters... 
} 

연락처 생성이 다양한 JSF 페이지 및 항목에서 contactsList에 추가 할 수 있습니다 목록은 응용 프로그램 전체의 다양한 도메인 객체에서 ManagedProperty로 참조되어야합니다. 사용자가 기존의 연락처 또는 각 도메인 객체에 대한 새로운 하나를 만드는 것을 선택할 수있는 선택의 여지가 것이기 때문에

@ManagedBean 
public class Claim implements Serializable { 
    private Contact insured; //needs to reference entry in contactsList 
} 

@ManagedBean 
public class Vehicle implements Serializable { 
    private Contact driver; //needs to reference entry in contactsList 
} 

, contactsList에서 동일한 연락 항목에서 참조 할 수 있습니다 : 예를 들어, 내 도메인 객체의 일부를 보면 둘 이상의 도메인 객체. 특정 Java Collection 항목을 JSF 2의 ManagedProperty로 참조/삽입하는 방법이 있습니까? 아니면이 시나리오를 처리하기위한 더 나은 접근법이 있습니까?

감사합니다.

답변

2

이론적으로 나는리스트 인덱스를 기억하고 전달하는 방법을 보지만, 이것은 꽤 어색 할 것입니다.

추가 인수가있는 메소드 호출이 지원되는 Servlet 3.0/EL 2.2 가능 컨테이너 (Tomcat 7, Glassfish 3 등)를 타겟팅하거나 EL 2.1과 동일한 개선 사항을 추가하는 JBoss EL을 설치할 수있는 경우 훨씬 더 좋습니다. , 당신은 그 객체를 액션 메소드 인자로 넘겨 줄 수 있어야합니다.

예. Claim 관리 빈에서와

<h:dataTable value="#{contactHolder.contacts}" var="contact"> 
    <h:column> 
     <h:commandButton value="Claim" action="#{claim.doAction(contact)}" /> 
    </h:column> 
</h:dataTable> 

: 신속한 응답을

public void doAction(Contact contact) { 
    // ... 
} 
+0

감사합니다! – holic87

관련 문제