2012-11-06 3 views
2

설정 메소드 selectedRestaurant이 호출되었지만 메뉴가 단지 뒤집어지고 <h:outputText>을 렌더링하지 않습니다. 메뉴에 내용이 있으므로 <f:selectItems>에 사용 된 목록은 비어 있지 않습니다. 내가 omnifaces.SelectItemsConverter을 사용하고 있기 때문에 그것이 변환 문제로 인한 것이 아닐 것이라고 생각합니다.목록의 객체를 사용하는 Primefaces SelectOneMenu가 다시 선택 항목으로 반전합니다.

이 내 JSF 코드입니다 :

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head /> 
<h:body> 
    <h:panelGroup id="adminOneMenu" layout="block"> 
    <h:form> 

    <p:selectOneMenu value="#{bugBean.selectedRestaurant}" converter="omnifaces.SelectItemsConverter"> 
     <f:selectItem itemValue="" itemLabel="Restaurant wählen"/> 
     <f:selectItems value="#{bugBean.restaurants('London')}" var="restaurant" itemLabel="#{restaurant.screenName}"/> 
     <p:ajax update=":adminOneMenu"/> 
    </p:selectOneMenu> 

    <h:outputText value="#{bugBean.selectedRestaurant.screenName}" /> 
    </h:form> 
    </h:panelGroup> 

</h:body> 
</html> 

이 후원 콩은 다음과 같습니다 변환 오류가있을 것이다

package huhu.main.managebean; 

import java.io.Serializable; 
import java.util.List; 

import javax.ejb.EJB; 
import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 

import huhu.model.generated.Restaurant; 
import huhu.service.RestaurantService; 

@Named 
@SessionScoped 
public class BugBean implements Serializable { 

    private static final long serialVersionUID = 1L; 
    private Restaurant selectedRestaurant; 

    @EJB 
    RestaurantService rs; 

    public List<Restaurant> getRestaurants(String city){ 
     List<Restaurant> restaurants; 
     restaurants = rs.getRestaurantsInCity(city); 
     return restaurants; 
    } 

    public Restaurant getSelectedRestaurant() { 
     return selectedRestaurant; 
    } 

    public void setSelectedRestaurant(Restaurant selectedRestaurant) { 
     this.selectedRestaurant = selectedRestaurant; 
    } 
} 

답변

3

경우, 오류 메시지가 표시됩니다.

클래스 클래스에 #equals() 및 #hashcode()를 구현 했습니까?

+0

오류 메시지가없고, #equals() 및 #hashcode() 구현이 없습니다. 'omnifaces.SelectItemsConverter'에 꼭 필요한 것은 아니겠습니까? – Lester

+1

변환에는 필요하지 않지만 selectOneMenu에는 필 요합니다. Primefaces selectOneMenu는 레스토랑이 선택 항목 목록에 선택되어 있는지 확인합니다. #equals()가 구현되지 않으면 이것이 작동하지 않을 수 있습니다. – stg

+0

데이터베이스 테이블에서 생성 된 엔티티입니다. 새로 생성 할 때마다 수동으로 편집하지 않고 어떻게 구현할 수 있습니까? – Lester