Есть ли способ внедрить интерфейс TableFactory с определенными полями, связанными с propertyId? Я получаю только один тип поля, так как я использую универсальный класс для всех своих таблиц, и мне не хватает логического значения CheckBox (отличный код):
class DefaultTableFieldFactory implements TableFieldFactory {
@Override
public Field<?> createField(Container container, Object itemId, Object propertyId, Component component) {
TextField t = new TextField()
switch(propertyId) {
case "firstname": t.setNullRepresentation("");
case "lastname": t.setNullRepresentation("");
case "mobile": t.setNullRepresentation("");
case "tel": t.setNullRepresentation("");
case "email": t.setNullRepresentation("");
default: break;
}
t.setWidth("95px")
return t
}
}
Поэтому мне нужно использовать этот класс выше, который реализует DefaultTableFieldfactory, чтобы иметь нулевое представление как «» (вместо «null») во всем моем приложении.
Цель состоит в том, чтобы предоставить для моих пользовательских компонентов (более 30) это нулевое представление в одном месте, я хочу использовать этот класс в качестве фабрики по умолчанию для каждой таблицы и подключить его, как я делал раньше:
def contacts = (Grails.get(FundService)).getAllContacts(fundId)
def cContainer = new BeanItemContainer<Contact>(Contact.class,contacts)
def t = new Table()
t.containerDataSource = cContainer
t.setTableFieldFactory(new DefaultTableFieldFactory())