내가 사용 selectonemenu과 같이 유효하지 않습니다selectonemenu 검증 오류 : 값
<h:selectOneMenu value="#{MyBean.zajecie.przedmiot}">
<f:selectItems value="#{MyBean.przedmioty}" var="p"
itemLabel="#{p.nazwa}" itemValue="#{p}" />
<f:converter converterId="converter.PrzedmiotConverter" />
</h:selectOneMenu>
에서 myBean :
private Zajecie zajecie;//+set get
private List<Przedmiot> przedmioty;//+set get
@PostConstruct
private void init() {
przedmioty = przedmiotDao.findByLogin("login");
zajecie = new Zajecie();
}
및 컨버터 방법 :
public Object getAsObject(FacesContext context, UIComponent component, String value) {
PrzedmiotDao przedmiotDao = DaoFactory.getInstance().getPrzedmiotDao();
Przedmiot przedmiot = przedmiotDao.findById(Przedmiot.class, Integer.parseInt(value));
return przedmiot;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
Przedmiot przedmiot = (Przedmiot) value;
String idAsString = String.valueOf(przedmiot.getPrzedmiotId());
return idAsString;
}
selectonemenu 구성 요소 그것이 예정되어있는대로 사람이 거주하고 있습니다. 제출하면 Validation Error: Value is not valid
이 표시됩니다. 나는 id 필드를 사용하여 이클립스로 생성 했으므로 엔티티에 적절한 equals()
메서드가 필요하다는 것을 알고있다. 그런 다음 이 다음과 같이 반환 했으므로 getClass() != obj.getClass()
을 obj instanceof Przedmiot
으로 변경해야했습니다. Przedmiot_$$_javassist_1
. 결국 obj
이 null
인 것으로 판명되어 관련성이 있는지 확신 할 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
편집 :
에서 myBean은 ViewScoped입니다.
재미있는 점은 동일한 변환기를 사용하는 유사한 코드가 응용 프로그램의 다른 부분에서 작동한다는 것입니다. 차이점은 작업 부분에서 나는 단지 Przedmiot
유형 목록을보고 있고 다른 방식으로 그것을 얻고 있다는 것입니다.
@PostConstruct
private void init() {
student = studentDao.findByLogin(ra.getUser());
}
<h:selectOneMenu value="#{otherBean.przedmiot}">
<f:selectItems value="#{otherBean.student.grupa.przedmiots}" var="p"
itemLabel="#{p.nazwa}" itemValue="#{p}" />
<f:converter converterId="converter.PrzedmiotConverter" />
</h:selectOneMenu>
그게 작동하지 않습니다. String을 Przedmiot에 캐스트 할 수 없습니다. 당신이 준 링크에 설명 된대로 고유 한 ID를 나타 내기 위해 값을 쓰지 않습니까? – user2270884
아, 죄송합니다. 페이지를로드하거나 서버에 제출할 때 오류가 발생합니까? 제출시 –
. 유효성 검사가 실패합니다. – user2270884