Guten Tag! ich einige Tabelle erstellen:Apache Wicket TextField
List<IColumn<User, String>> columns = new ArrayList<>();
columns.add(new AbstractColumn<User, String>(new Model<String>("")) {
@Override
public void populateItem(Item<ICellPopulator<User>> cellItem, String componentId, IModel<User> rowModel) {
cellItem.add(new Link<String>(componentId) {
@Override
public void onClick() {
System.out.println("editors" + rowModel.getObject().getName());
PageParameters parameters = new PageParameters();
parameters.add("id", rowModel.getObject().getId());
add(new EditPanel("panel", rowModel));
}
@Override
public IMarkupFragment getMarkup() {
return Markup.of("<div wicket:id='cell'> edit </div>");
}
});
}
Wenn ich auf Zelle in Tabelle klicken, Zelle Markup "Bearbeiten", erstelle ich einige Panel:
public class EditPanel extends Panel {
public EditPanel(String id, IModel<User> model) {
super(id, model);
User user = model.getObject();
if (user == null) {
user = new User();
}
List<UserRole> list = Arrays.asList(UserRole.values());
Form<?> form = new Form("form", new CompoundPropertyModel(user));
TextField<String> userName = new TextField<String>("name");
};
add(new FeedbackPanel("feedback"));
add(form);
form.add(userName);
}
}
Wie kann ich Wert auf TextField userName = new TextField ("name"); von meinem Modell, oder wenn Model == null, einen beliebigen Text setzen, was ich brauche? Danke!
Da Sie 'CompoundPropertyModel' verwenden, geben Sie den Entity-Namen als Textfeld ein. Wenn Ihr Benutzermodell ein Benutzername ist, sollten Sie' new TextField ("Benutzername") 'angeben, dann verlassen Sie sich nicht auf Felder – soorapadman