Я заполняю Grid beanItemContainer и хочу добавить несколько кнопок для различных функций и перенаправлений в каждой из моих строк.
Пока что я создал BeanItemContainer и обернул его в GeneratedPropertyContainer следующим образом:
private BeanItemContainer<Foo> fooContainer = new BeanItemContainer<Foo>(Foo.class);
private GeneratedPropertyContainer wrapperContainer = new GeneratedPropertyContainer(fooContainer);
Теперь я попытался добавить сгенерированное свойство следующим образом:
wrapperContainer.addGeneratedProperty("buttons", new PropertyValueGenerator<Button>()
{
@Override
public Button getValue(Item item, Object itemId, Object propertyId)
{
ClickListener fooBarClickListener = new ClickListener()
{
@Override
public void buttonClick(ClickEvent event)
{
// do something
}
};
Button button = new Button(FontAwesome.USER);
button.addClickListener(fooBarClickListener);
return button;
}
@Override
public Class<Button> getType()
{
return Button.class;
}
});
и далее по моему коду
getColumn("buttons").setRenderer(new ButtonRenderer());
Тем не менее, это всего лишь одна кнопка, где мне нужно несколько кнопок, кроме того, она даже не работает.
не получается, после ошибки
Cannot remove converter, as renderer's presentation type java.lang.String and column's model com.vaadin.ui.Button type aren't directly compatible with each other (in Column[propertyId:buttons])
Кроме того, вместо кнопки, для моего варианта использования будет достаточно кликабельной иконки (желательно Fontawesome).