Vaadin Flow Framework
in a Nutshell
JOONAS LEHTINEN
VAADIN 10
Vaadin 8
Java
Web
Java
Web
E l e m e n t s
F l o w
Application,java
@SpringBootApplication
@ServletComponentScan
@EnableJpaRepositories
@EntityScan
public class Application {
public static void main(String[] args) {
SpringApplication.
run(Application.class, args);
}
}
Trip,java
@Entity
public class Trip {
@Id
@GeneratedValue
private long id;
private LocalDate date;
private String start;
private String end;
// setters and getters
}
TripList,java
@Route(value = "")
public class TripList extends Div {
}
TripList,java
@Route(value = "")
public class TripList extends Div {
@PostConstruct
public void init() {
add(new Text("Hello World"));
}
}
TripList,java
@Route(value = "")
public class TripList extends Div {
private Grid<Trip> grid = new Grid<>();
@PostConstruct
public void init() {
grid.addColumn(Trip::getFormattedDate).setHeader("Date");
grid.addColumn(Trip::getStart).setHeader("From");
grid.addColumn(Trip::getEnd).setHeader("To");
add(grid);
}
TripList,java
@Route(value = "")
public class TripList extends Div {
@Autowired
private TripRepository repository;
private Grid<Trip> grid = new Grid<>();
@PostConstruct
public void init() {
grid.addColumn(Trip::getFormattedDate).setHeader("Date");
grid.addColumn(Trip::getStart).setHeader("From");
grid.addColumn(Trip::getEnd).setHeader("To");
grid.setDataProvider(
SpringDataProviderBuilder.forRepository(repository)
.withDefaultSort("date", SortDirection.DESCENDING).build());
TripMap.java
@HtmlImport("DirectionSearch.html")
@Tag("direction-search")
public class TripMap extends Component {
}
TripList,java
@StyleSheet("styles.css")
@Route(value = "")
public class TripList extends Div
implements HasStyle {
// …
private TripMap map = new TripMap();
@PostConstruct
public void init() {
setClassName("trip-list");
grid.addColumn(Trip::getFormattedDate).setHeader("Date");
// …
add(map, grid);
}
}
styles.css
html { font-family: sans-serif; }
.trip-list {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.trip-list vaadin-grid {
width: 500px;
height: 70vh;
margin: 9px;
}
TripList,java
@PostConstruct
public void init() {
setClassName("trip-list");
grid.addColumn(Trip::getFormattedDate).setHeader("Date");
grid.addColumn(Trip::getStart).setHeader("From");
grid.addColumn(Trip::getEnd).setHeader("To");
grid.setDataProvider(
SpringDataProviderBuilder.forRepository(repository)
.withDefaultSort("date", SortDirection.DESCENDING).build());
grid.asSingleSelect().
addValueChangeListener(
selected ->
map.showTrip(selected.getValue())
);
add(grid);
TripMap.java
@HtmlImport("DirectionSearch.html")
@Tag("direction-search")
public class TripMap extends Component {
public void showTrip(Trip trip) {
if (trip == null) {
show("", "");
} else {
show(trip.getStart(), trip.getEnd());
}
}
private void show(String start, String end) {
JsonObject properties = Json.createObject();
properties.put("start", start);
properties.put("end", end);
getElement().callFunction("setProperties", properties);
}
}
Thank you!
Vaadin Flow framework in a nutshell

Vaadin Flow framework in a nutshell

Editor's Notes

  • #3 Main Cover Template Date is optional, and by default not preferred.
  • #10 Thank You Page Template
  • #11 Thank You Page Template
  • #12 Thank You Page Template
  • #13 Thank You Page Template
  • #14 Thank You Page Template
  • #15 Thank You Page Template
  • #17 Thank You Page Template
  • #18 Thank You Page Template
  • #19 Thank You Page Template
  • #20 Thank You Page Template
  • #21 Thank You Page Template
  • #22 Thank You Page Template