2012-05-23 5 views
3

이 이상한 문제가 발생하여 일일이 다되었지만 selectOneMenu가 모두 작동하지 않아 그 이유를 이해할 수 없습니다.primefaces selectOneMenu가 작동하지 않을 때

그래서 여기 내 코드입니다 :

내 JSF

<p:selectOneMenu id="entityType" 
     value="#{entityBean.entity.type}" 
     style="width:240px;" 
     converter="entityTypeConverter" 
     valueChangeListener="#{entityBean.entityTypeListener}" 
     required="true"> 
     <f:selectItems value="#{entityBean.typeList}" 
       var="et" 
       itemLabel="#{et.name}" 
       itemValue="#{et}" /> 
</p:selectOneMenu> 

내 계산기 :

나는 (이 선택한 값을 전달) 만드는거야 때이 같은 기대 작품
@FacesConverter("entityTypeConverter") 
    public class EntityTypeConverter implements Converter { 
     public Object getAsObject(FacesContext context, UIComponent component, String value) { 
      if (value == null || value.length() == 0) { 
       return null; 
      } 
      Long id = Long.parseLong(value); 

      return EntityType.findEntityType(id); 
     } 

     public String getAsString(FacesContext context, UIComponent component, Object value) { 

      return value instanceof EntityType ? ((EntityType) value).getId().toString() : ""; 
     } 
    } 

, 하지만 엔티티를 편집하려고 할 때 선택한 유형이 실제로 선택되지 않습니다. primefaces 3.1.1 및 3.2 시도했지만 view/edit 모드에서 선택한 값을 가져올 수 없습니다.

내가 뭘 잘못하고 있니?

미리 감사드립니다.

+0

엔티티와 엔티티 타입은 단지 환상적인 이름입니다 –

+0

valueChangeListener 대신'p : ajax'를 사용하십시오 ... – Daniel

+0

valueChangeListener가없는 동일한 문제. 내 문제는 편집 페이지를로드 할 때 선택한 값을 얻는 것입니다. 나는 값 = "# {entityBean.entity.type}"라고 생각하고 변환기가이를 수행해야하지만 분명히 이것은 나와 작동하지 않는다. –

답변

10

EntityType 클래스의 메소드가 누락되었거나 손상된 경우 이러한 현상이 발생할 수 있습니다. 당신이 유일하게 충분한 인스턴스를 식별하는 것 같다 당신의 EntityType 클래스에 id 속성을했습니다는 사실을 감안할 때, 다음과 같은 최소한의 구현은 당신을 위해 그것을 수행해야합니다

@Override 
public boolean equals(Object other) { 
    return (other instanceof EntityType) && (id != null) 
     ? id.equals(((EntityType) other).id) 
     : (other == this); 
} 

@Override 
public int hashCode() { 
    return (id != null) 
     ? (this.getClass().hashCode() + id.hashCode()) 
     : super.hashCode(); 
} 

hashCode()equals()contract에 따라 단지 필수입니다.

+0

답변 해 주셔서 감사합니다. 나의 equals 메소드는 missig입니다! 이제는 잘 작동합니다! –

+0

당신은 환영합니다 :) – BalusC

관련 문제