getAsObject()
içinde öğe değeri yerine öğe etiketini neden aldığınızdan emin değilim. Belki de getAsString()
yanlış yapıyor ve öğrenci kimliğine göre öğrenci adını döndürüyor.
Herhangi bir şekilde, itemValue
numaranızın kesinlikle doğru olmadığını söyleyebilirim.
<h:selectOneMenu id="studlist" value="#{studBean.selectedStudent}">
<f:selectItems value="#{studBean.student}" var="s"
itemValue="#{s.studid}" itemLabel="#{s.name}" />
<f:converter converterId="studentconverter" />
</h:selectOneMenu>
A dönüştürücü karmaşık bir Java nesne ve bir HTTP isteği parametre olarak sarılabilen, böylece, bir String gösterimi arasında dönüştürmek için kullanılacak amaçlanır. Ancak, öğrenci kimliğini tüm öğrenci nesnesinin yerine öğe değeri olarak belirtirsiniz. Bunun yerine tüm öğrenci nesnesini belirtmeniz gerekir. Ayrıca, #{studBean.selectedStudent}
'un, öğrenci kimliğini temsil eden Long
mülküne değil, Student
özelliğine başvurduğundan emin olmalısınız. aşağıdaki gibi itemValue
düzeltmek zaman
: o zaman
public String getAsString(FacesContext context, UIComponent component, Object value) {
// This method is called when item value is to be converted to HTTP request parameter.
// Normal practice is to return an unique identifier here, such as student ID.
Student student = (Student) value;
Long id = student.getStudid();
return String.valueOf(id);
}
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// This method is called when HTTP request parameter is to be converted to item value.
// You need to convert the student ID back to Student.
Long id = Long.valueOf(value);
Student student = someStudentService.find(id);
return student;
}
işe gerektiğini:
<h:selectOneMenu id="studlist" value="#{studBean.selectedStudent}">
<f:selectItems value="#{studBean.student}" var="s"
itemValue="#{s}" itemLabel="#{s.name}" />
<f:converter converterId="studentconverter" />
</h:selectOneMenu>
ve aşağıdaki gibi dönüştürücü (önemsiz nullchecks atlanmıştır). Başlangıçta vardı
Alternatif olarak, itemValue
tutmak ve tamamen <f:converter>
kaldırmak, ancak o zaman öğrenci kimliğini temsil eden bir Long
özelliğine işaret etmek #{studBean.selectedStudent}
değiştirmek zorunda.
her zamanki gibi BalusC! Teşekkür – Mariah