Я пытаюсь использовать Metawidget с Vaadin и получаю следующую ошибку при запуске моего кода
java.lang.NoClassDefFoundError: com/vaadin/data/Property
Я использую Vaadin 8 и Metawidget 4.2 (последний доступный выпуск).Я обнаружил исключение для кода ниже в org.metawidget.vaadin.ui.widgetprocessor.binding.simple.SimpleBindingProcessor
// SimpleBindingProcessor only binds to Property components (TextFields, Labels, etc)
if ( !( component instanceof Property ) ) {
return component;
}
Я проверил API Vaadin, и интерфейс com.vaadin.data.Property
существует в Vaadin 7.x, но не в 8.x.Похоже, что Metawidget не был портирован для работы с Vaadin 8.x и выше.Я использовал Metawidget с Java Swing, и я очень доволен повышением производительности, которое он предложил, и хотел бы использовать его и с Vaadin.Я ищу предложения о том, как поступить.(Вероятно, вопросы со 2 по 5 относятся к @Richard Kennard / @Loghman Barari)
- Кто-нибудь использовал Metawidget с Vaadin 8.x и выше?Каковы усилия по расширению Metawidget и внесению необходимых изменений?
- Планируется ли выпуск новой версии Metawidget с поддержкой Vaadin 8.x и выше?
- Есть ли класс, который я могу использовать, который уже является частью Metawidget, о котором я не знаю?
- Продолжая вопрос 1, могу ли я получить представление о тех усилиях, которые необходимы для миграции, чтобы я мог попытаться улучшить Metawidget для поддержки Vaadin8.x и более поздних версий?
- Является ли мой единственный вариантиспользовать Vaadin 7.x?
Мой код ниже
@Theme("mytheme")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
VerticalLayout layoutPlaceHolder = new VerticalLayout();
VaadinMetawidget myMetawidget = new VaadinMetawidget();
Person p = new Person("Mr", "Pramod C S", 40, false);
myMetawidget.setToInspect(myMetawidget);
layoutPlaceHolder.addComponent(myMetawidget);
setContent(layoutPlaceHolder);
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
}
Код класса Person ниже
import org.metawidget.inspector.annotation.UiSection;
public class Person {
private String title;
private String name;
private int age;
private boolean retired;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String title, String name, int age, boolean retired) {
this.name = name;
this.age = age;
this.retired = retired;
this.title = title;
}
public String getName() { return name; }
public void setName( String name ) { this.name = name; }
public int getAge() { return age; }
public void setAge( int age ) { this.age = age; }
@UiSection(value = { "Test" })
public boolean isRetired() { return retired; }
public void setRetired( boolean retired ) { this.retired = retired; }
public String getTitle() { return title;}
public void setTitle(String title) {this.title = title;}
}