我正在尝试将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;
}
我检查了Vaadin API,接口com.vaadin.data.Property
在Vaadin 7.x中存在,但在8.x中不存在。看起来Metawidget尚未移植到Vaadin 8.x及更高版本上。我已经将Metawidget与Java Swing一起使用,并且对它提供的生产率提高感到非常满意,并且也希望与Vaadin一起使用它。我正在寻找有关如何进行的建议。 (问题2至5可能是@Richard Kennard / @Loghman Barari)
我的代码在
下方@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;}
}
答案 0 :(得分:1)
显然,暂时没有基于它们的version history的Metawidget的新版本,因此缺乏对包括新Vaadin版本在内的最新框架的支持。但是,还有其他几种选择
使用Vaadin 8,您可以使用Crud UI add-on,而通过Vaadin Platform(需要v12或更高版本),可以使用新的Vaadin Crud组件,它们并非完全相同,但旨在帮助相同的用例。
答案 1 :(得分:0)
Metawidget仍在开发中(尽管速度要慢得多),但我个人更专注于JavaScript框架(如Vue)。但是,我希望有人能够承担起重任,将Metawidget移植到Vaadin 8!
就“多少工作”而言,VaadinMetawidget的整个源代码只有几千行(包括空格和注释),所以可能不会太多。大多数功能由Pipeline helper类处理。如果您有将Vaadin 7组件移植到Vaadin 8的经验,那么(希望)应该很简单。
此致
理查德。