Vaadin 技巧:以声明方式构建 UI

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(251)   2023-12-03 16:34:57

如果您使用过 GWT,那么您可能会发现 UiBinder 对于设计复杂的 UI 非常有用。在我们关于 Vaadin 的系列文章中,我们想比较 Vaadin 和 GWT。 Vaadin 提供了多种开箱即用的工具和组件,用于构建复杂且美观的 UI。其中之一是以声明方式构建 UI 的可能性,例如 UiBinder。与 GWT 相比,Vaadin 提供了直接使用 .html 文件的可能性。

程序化方式

与在 GWT 中一样,Vaadin UI 也可以通过编程方式构建。例如,假设我们想要构建一个简单的表单来将任务添加到待办事项列表中。一种以编程方式执行此操作的方法:

public class MainUI extends UI {

@Override
protected void init(VaadinRequest request) {
// TODO Auto-generated method stub
FormLayout layout = new FormLayout();
TextField taskTitle = new TextField();
taskTitle.setCaption("Title");
taskTitle.setIcon(VaadinIcons.CHEVRON_DOWN);
TextArea taskDescription = new TextArea();
taskDescription.setCaption("Description");
taskDescription.setIcon(VaadinIcons.LINES);
DateField taskDate = new DateField();
taskDate.setCaption("Date");

Button button = new Button("Add");
button.setIcon(VaadinIcons.PLUS);

layout.addComponent(taskTitle);
layout.addComponent(taskDescription);
layout.addComponent(taskDate);
layout.addComponent(button);
setContent(layout);
}

}

结果:

声明方式

如果 UI 复杂且具有嵌套组件,则声明式方法很有用。 Vaadin 开发了可以绑定到 Java 组件的 HTML 自定义元素。自定义元素以 vaadin- 开头。 元素名称的其余部分可以通过分隔单词并将其设为小写来从 java 类中提取,如 Vaadin 的 网站中所述。以声明方式创建 UI 的第一步是创建 html 文件,我们将其命名为 Form.html:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="vaadin-version" content="8.0.5">
</head>
<body>
<vaadin-form-layout>
<vaadin-text-field icon="fonticon://Vaadin-Icons/e7ce" caption="Task Name" _id="todoTitle">
</vaadin-text-field>
<vaadin-text-area icon="fonticon://Vaadin-Icons/e7ef" _id="todoDescription">
</vaadin-text-area>
<vaadin-date-time-field caption="Date" _id="todoDate">
</vaadin-date-time-field>
<vaadin-button icon="fonticon://Vaadin-Icons/e801"_id="todoButton">
Add
</vaadin-button>
</vaadin-form-layout>
</body>
</html>

第二步是创建一个将绑定到该文件的 java 类。

@DesignRoot
public class Form extends FormLayout {

	public Form() {
		Design.read("Form.html", this);
	}
}

现在我们可以将它用作 UI 类中的普通组件:

public class MainUI extends UI {

@Override
protected void init(VaadinRequest request) {
setContent(new Form());
}

}

要将 .html 中的字段绑定到 java 类中的字段,需要设置 _id 属性。例如,绑定我们的文本框:

<vaadin-text-field icon="fonticon://Vaadin-Icons/e7ce" caption="Task Name" _id="todoTitle">
</vaadin-text-field>

然后我们可以将它添加到java文件中,它会自动绑定:

@DesignRoot
public class Form extends FormLayout {

     TextField todoTitle;

     public Form() {
	Design.read("Form.html", this);
         //we can directly use it without initialization
        }
}

Vaadin 还提供了一个用于交互式设计 UI 的有趣工具:Vaadin Designer。 Vaadin 设计器允许使用鼠标和拖放来设计 UI。我们仅将该工具用于演示目的,因此我们无法对其进行真正的评估。 Vaadin-Designer 可以通过减少构建 UI 的时间和处理“样板”部分来帮助提高生产力。不幸的是,Vaadin Designer 不是免费的,它的附加值因项目而异。

带走

以编程方式设计 UI 并不总是很方便。 Vaading 有一种以声明方式构建 UI 的有趣方法。 HTML 自定义元素提供了一种将 .html 文件直接链接到 java 的方法。也许这是GWT开发者探索的一条路,因为UiBinder会在下一个3.0版本中被移除。

标签2: Java教程
地址:https://www.cundage.com/article/jcg-vaadin-tip-building-uis-declaratively.html

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...