2014-12-23 5 views
0

primefaces datatable에 문제가 있습니다. 데이터베이스에서 데이터를 가져오고 목록에 저장됩니다. 그게 훌륭합니다! 그러나 데이터 테이블은 4 개 대신 1 개의 열만 표시하며이 열은 모든 행에 복사됩니다.JSF Primefaces 데이터 테이블에 올바른 값이 표시되지 않습니다.

<h:form id="userslistform"> 
     <p:dataTable id="userlist" var="users" value="#{userBean.usersList}" 
      rowKey="#{userBean.username}"> 
      <p:column headerText="ID"> 
       <h:outputText value="#{userBean.id}" /> 
      </p:column> 
      <p:column headerText="Username"> 
       <h:outputText value="#{userBean.username}" /> 
      </p:column> 
      <p:column headerText="Firstname"> 
       <h:outputText value="#{userBean.firstname}" /> 
      </p:column> 
      <p:column headerText="Surname"> 
       <h:outputText value="#{userBean.surname}" /> 
      </p:column> 
     </p:dataTable> 
    </h:form> 

콩 :

@Named 
@SessionScoped 
@ManagedBean(name = "userBean") 
public class UserBean implements Serializable { 

    private static final long serialVersionUID = 1L; 
    private String username; 
    private String password; 
    private String firstname; 
    private String surname; 
    private Long id; 
    private String email; 
    private Long treeId; 
    private Boolean isadmin; 
    private List<User> usersList; 
    private User selectedUser; 

    private UserDataQuery query = new UserDataQuery(); 

    //getter and setters of every attribute 
    ... 

    @PostConstruct 
    public void init() { 
     usersList = query.getAllUsers(); 
    } 

} 

DAO :

당신은

<h:form id="userslistform"> 
    <p:dataTable id="userlist" var="users" value="#{userBean.usersList}" 
     rowKey="#{userBean.username}"> 
     <p:column headerText="ID"> 
      <h:outputText value="#{users.id}" /> 
     </p:column> 
     <p:column headerText="Username"> 
      <h:outputText value="#{users.username}" /> 
     </p:column> 
     <p:column headerText="Firstname"> 
      <h:outputText value="#{users.firstname}" /> 
     </p:column> 
     <p:column headerText="Surname"> 
      <h:outputText value="#{users.surname}" /> 
     </p:column> 
    </p:dataTable> 
</h:form> 

var 발 데이터를 표시하는 테이블 내부에 var에서 값을 사용할 필요가

public class UserDataQuery { 

    private EntityManagerFactory enf; 
    private EntityManager em; 

    public UserDataQuery() { 
     enf = Persistence.createEntityManagerFactory("xxxx"); 
     em = enf.createEntityManager(); 
     em.getTransaction().begin(); 
    } 

    public List<User> getAllUsers() { 

     List<User> usersList = em.createNamedQuery("User.findAll", User.class) 
       .getResultList(); 

     return usersList; 

    } 
    ... 
} 
+0

@Annotations (Java EE)와 @ManagedBean (JSF)을 혼합하는 것이 의미가 있습니까? – Tiny

답변

3

ue는 테이블이 렌더링 될 때 현재 행에 대한 참조를 나타냅니다. #{userBean.<attribute>}을 사용하면 항상 고정 값이 표시됩니다. 그리고 이제는 bean 자체에서 속성을 필요로하지 않습니다. (물론 다른 목적을 위해 필요하지 않는 한).

관련 문제