我正在尝试使用IntelliJ(v11.1.3)创建一个简单的Java webapp,并将其与一个简单的maven pom文件集成以下载Vaadin jar.
这是我的pom文件:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.a.maven.project</groupId>
<artifactId>MavenProject</artifactId>
<version>0.1</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin</artifactId>
<version>6.8.2</version>
</dependency>
</project>
Run Code Online (Sandbox Code Playgroud)
我正在从版本控制中检查这个项目,以便在IntelliJ中进行设置.但是,IntelliJ似乎无法识别"src"文件夹是sources文件夹.我可以手动将它设置为项目设置中的sources文件夹,这是一个小麻烦,但没什么大不了的.但是,每当我对pom文件进行更改时,IntelliJ"忘记"这是sources文件夹,然后我的所有Java文件都会在它们周围出现红色圆圈.有没有人知道造成这种情况的原因是什么?我已经尝试了解决这个问题的一切,包括在我的pom文件中指定源文件夹,但似乎没有任何工作.
提前致谢,
埃里克
我是Vaadin框架的新手,我看起来非常有趣,使用eclipse和maven来开发和构建我的应用程序我觉得很烦人每次我做一个mvn干净安装它需要很长时间来构建应用程序,我发现这是因为它编译了整套小部件.
即使我只在我的布局中使用Button,也会在构建应用程序时花费太多.
我已经研究了一段时间在互联网和2本书,但找不到足够的信息,如何使它只编译我正在使用的组件,而不是整套.
我使用maven原型创建了项目:
mvn archetype:generate -DarchetypeGroupId=com.vaadin -DarchetypeArtifactId=vaadin-archetype-application -DarchetypeVersion=7.1.9
Run Code Online (Sandbox Code Playgroud)
我确信每次构建战争时都会编译widgetset,当我执行mvn clean时会删除目录:/ src/main/webapp/VAADIN/widgetsets和/ src/main/webapp/VAADIN/gwt-unitCache
当我运行mvn install时,构建将持续超过3分钟:
...
[INFO] Compiling 6 permutations
[INFO] Compiling permutation 0...
[INFO] Process output
[INFO] Compiling
[INFO] Compiling permutation 1...
[INFO] Process output
[INFO] Compiling
[INFO] Compiling permutation 3...
[INFO] Process output
[INFO] Compiling
[INFO] Compiling permutation 2...
[INFO] Compiling permutation 4...
[INFO] Compiling
[INFO] Compiling permutation 5...
[INFO] Compile of permutations succeeded
[INFO] Linking into /.../example/src/main/webapp/VAADIN/widgetsets/com.my.example.AppWidgetSet; Writing extras to /.../example/target/extra/com.my.example.AppWidgetSet
[INFO] Link succeeded
[INFO] Compilation succeeded …
Run Code Online (Sandbox Code Playgroud) 我知道FileDownloader
用a 创建一个和调用扩展非常容易Button
.但是如何在没有Button
?的情况下开始下载?
在我的特定情况下,我现在有一个ComboBox
和我想要发送给用户的文件是在根据输入更改其值后生成的.应立即发送该文件,而无需等待再次单击.这很容易吗?
谢谢拉斐尔
构建基于Vaadin的应用程序的最佳方法是什么,以便我可以使用TDD(测试驱动开发)来创建应用程序?换句话说,我不想编写需要服务器或浏览器(甚至那些模拟器)的测试,因为那些可能太脆弱,太慢或两者兼而有之.
将GWT MVP模式转换为Vaadin的问题在某种程度上是相关的,因为我正在寻找用于使我的UI"逻辑"尽可能可测试的正确模式,但我不确定MVP是否转换为Vaadin的世界.
我正在使用JPAContainer + Hibernate,加载需要很长时间.例如,SQLContainer加载60ms的页面和JPA Container加载1.30s的相同页面.
在控制台中使用JPAContainer,我看到许多SQL查询 - 对于每个实体 - 查询; 实体人员没有其他表格的链接;
使用jpacontainer的代码:
JPAContainer<Person> container = JPAContainerFactory.make(Person.class,
"persistence-unit");
table.setContainerDataSource(container);
Run Code Online (Sandbox Code Playgroud)
使用SQLContainer的代码:
JDBCConnectionPool pool = null;
try {
pool = new SimpleJDBCConnectionPool("org.postgresql.Driver",
"jdbc:postgresql://127.0.0.1:5432/postgres", "postgres",
"pwd");
} catch (SQLException e) {
e.printStackTrace();
}
TableQuery tq = new TableQuery("Person", pool);
SQLContainer sqlContainer = null;
try {
sqlContainer = new SQLContainer(tq);
} catch (SQLException e) {
e.printStackTrace();
}
table.setContainerDataSource(sqlContainer);
Run Code Online (Sandbox Code Playgroud)
我的persistence.xml文件:
<persistence-unit name="persistence-unit" transaction-type="RESOURCE_LOCAL">
<jta-data-source>java:jboss/datasources/mfc-frontendDS</jta-data-source>
<properties>
<!-- Properties for Hibernate -->
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property …
Run Code Online (Sandbox Code Playgroud) 我正在使用Vaadin文本字段,我想限制它仅支持数字.我试图覆盖setValue()
并返回而不调用super.setValue()
如果文本不是数字.但它似乎没有起作用.我怎么能纠正这个?我正在使用Vaadin 7.我认为它也不支持NumberField.
我已经为Vaadin会话设置了最大非活动时间间隔,如下所示.
VaadinSession.getCurrent().getSession().setMaxInactiveInterval(60);
Run Code Online (Sandbox Code Playgroud)
添加了一个会话销毁监听器,如下所示进行测试.
servletService.addSessionDestroyListener(new SessionDestroyListener() {
public void sessionDestroy(SessionDestroyEvent event) {
System.out.println("SESSION TIMEOUT");
}
});
Run Code Online (Sandbox Code Playgroud)
在服务器端的所需时间调用此侦听器.但是我无法在浏览器端同时看到"Session Expired"消息.通常它会在第4到第5分钟之间显示.有没有办法以一致的方式同时获得这两者.
另请注意,我们目前还没有使用推送功能,目前我们不能选择它.
执行客户端轮询将重置会话的上一个活动时间,并且如果轮询间隔小于maxInactiveInterval,则可以使会话永远保持活动状态.
我想根据单元格的值更改Vaadin网格行的颜色.我尝试了如下,但没有奏效.
SCSS
@import "mytheme.scss";
@import "addons.scss";
// This file prefixes all rules with the theme name to avoid causing conflicts with other themes.
// The actual styles should be defined in mytheme.scss
.mytheme {
@include addons;
@include mytheme;
.v-grid-row.error_row {
// Tried following elements and didn't work.
// background-color: red !important;
// color: blue !important; // This changed the color of the font.
background: green !important;
}
}
Run Code Online (Sandbox Code Playgroud)
Java代码
grid.setStyleGenerator(t -> {
if (t.getLogLevel().trim().equals(ERROR) || t.getLogLevel().trim().equals(WARN)) {
return "error_row";
} …
Run Code Online (Sandbox Code Playgroud) 我是Java开发人员,我将开始新项目.我的客户端开发技能非常有限,这就是为什么我真的很喜欢Vaadin框架的想法.我已经评估了Vaadin 10 Bakery App Starter应用程序https://vaadin.com/start#vaadin10,并且为了使这个应用程序启动并运行而自定义的HTML/CSS/JavaScript数量让我感到惊讶.现在我真的很困惑,不明白它如何简化开发人员的生活.
我现在可以作为项目启动器使用的唯一应用程序是着名的QuickTickets Dashboard https://demo.vaadin.com/dashboard/,其中所有UI都是纯Java实现的.目前最大的问题是这个应用程序是在Vaadin 8上实现的,我无法为Vaadin 10找到它的版本.你有类似Vaadin 10的东西吗?如果不是,您是否有从Vaadin 8到Vaadin 10的迁移指南,我可以使用它来尝试将此应用程序移植到Vaadin 10?