Aber wenn ich ein Geschäftsobjekt bearbeite, dem eine Kategorie (einen) Sektor zugeordnet ist dazu. Die Kategorie wird beim ersten Laden der Seite edit.xhtml nicht angezeigt. Ich weiß, dass der Wert in der Backing-Bean SessionScoped korrekt ist. Wenn ich eine andere Sektorkategorie auswähle und dann zum ursprünglichen Sektor zurückkehre, wird die Kategorie ordnungsgemäß festgelegt, da sie zunächst beibehalten wurde.
Die POJO-Klassen (Sektor -Category) hat die Funktionen hashCode() und equal(Object object).
Ich habe CRUD-generierte JSF-Konverter für das POJO-Objekt, aber ich glaube nicht, dass das die Ursache ist Problem. Ich denke, dass das zweite selectOneMenu aus irgendeinem Grund seinen Wert nicht so anzeigt, wie er sollte. Wenn ich den übergeordneten Sektor (Sektor) auf etwas anderes umdrehe und wieder in den Ausgangszustand zurückkehre, wird der korrekte Wert aus der verwalteten Bean angezeigt.
Wie kann ich die Kategorie erstellen? selectOneMenu-Komponente zeigt den Wert in der verwalteten Bean an?
Grüße Chris
Erscheint Fehlermeldung< /p>
Code: Select all
FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=null[severity=(ERROR 2), summary=(No activity selected), detail=(No activity selected)]
Code: Select all
...
...
Code: Select all
@ManagedBean(name = "categoryController")
@SessionScoped
public class CategoryController implements Serializable{
....
@FacesConverter(forClass = Category.class)
public static class CategoryControllerConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
CategoryController controller = (CategoryController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "categoryController");
return controller.ejbFacade.find(getKey(value));
}
java.lang.Integer getKey(String value) {
java.lang.Integer key;
key = Integer.valueOf(value);
return key;
}
String getStringKey(java.lang.Integer value) {
StringBuffer sb = new StringBuffer();
sb.append(value);
return sb.toString();
}
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof Category) {
Category o = (Category) object;
return getStringKey(o.getIdCategory());
}
else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + CategoryController.class.getName());
}
}
}
Code: Select all
...
public class Category implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idCategory")
private Integer idCategory;
...