You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If you're using value objects or domain primitives in your FDO, you can create a converter by implementing [interfacename]`Converter<T>`. The following example converts between an [clasname]`EmailAddress` and a [classname]`String`:
117
+
If you're using value objects or domain primitives in your FDO, you can create a converter by implementing [interfacename]`Converter<T>`. The following example converts between an [classname]`EmailAddress` and a [classname]`String`:
118
118
119
119
.EmailAddressConverter.java
120
120
[source,java]
@@ -134,7 +134,7 @@ public class EmailAddressConverter implements Converter<String, EmailAddress> {
134
134
}
135
135
136
136
@Override
137
-
public String convertToPresentation(EmailAddress emailAddress,
137
+
public String convertToPresentation(EmailAddress emailAddress,
Copy file name to clipboardExpand all lines: articles/building-apps/forms-data/consistency/transactions/declarative.adoc
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -68,7 +68,7 @@ public class MyApplicationService {
68
68
@Transactional
69
69
public void myMethod(MyInput input) {
70
70
if (!isValid(input)) {
71
-
throw new IllegalArgumentExcpetion("Bad input");
71
+
throw new IllegalArgumentException("Bad input");
72
72
}
73
73
...
74
74
}
@@ -116,7 +116,7 @@ public class MyApplicationService {
116
116
117
117
== Caveats
118
118
119
-
When working with declarative transactions, it's important to remember that the annotations themselves don't manage any transactions. They're merely instructions for how Spring should manage the transactions.
119
+
When working with declarative transactions, it's important to remember that the annotations themselves don't manage any transactions. They're merely instructions for how Spring should manage the transactions.
120
120
121
121
During application startup, Spring detects the `@Transactional` annotation and turns the service into a proxy. When a client calls the proxy, the call is routed through a _method interceptor_. The interceptor starts the transaction, calls the actual method, and then commits the transaction when the method returns, as illustrated in this diagram:
122
122
@@ -141,12 +141,12 @@ public class MyApplicationService {
141
141
public void mySecondMethod() {
142
142
// myFirstMethod() will participate in the transaction of mySecondMethod(),
143
143
// even though it has been annotated as REQUIRES_NEW.
144
-
myFirstMethod();
144
+
myFirstMethod();
145
145
}
146
146
}
147
147
----
148
148
149
149
You can fix this by managing the transactions, <<programmatic#,programmatically>>.
150
150
151
-
// Actually, you can fix it by using AspectJ proxies as well, but I don't want to go there.
152
-
151
+
// Actually, you can fix it by using AspectJ proxies as well, but I don't want to go there.
Copy file name to clipboardExpand all lines: articles/building-apps/security/protect-views/flow.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ The easiest way to grant or deny access to a Flow view is to use annotations. Th
24
24
[NOTE]
25
25
The `@AnonymousAllowed` annotation is a Vaadin-specific annotation; the others are Jakarta annotations (JSR-250). The Spring Security annotations `@Secured` and `@PreAuthorize` are *not supported on views*.
26
26
27
-
The following example uses [annoationname]`@AnonymousAllowed` to allow *all users* -- both authenticated and unauthenticated -- to access the view:
27
+
The following example uses [annotationname]`@AnonymousAllowed` to allow *all users* -- both authenticated and unauthenticated -- to access the view:
Copy file name to clipboardExpand all lines: articles/components/upload/file-handling.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ The uploading of files may be handled either with Vaadin Flow using Java, or wit
16
16
17
17
The Java Flow Upload component provides an API to handle directly uploaded file data, without having to set up an endpoint or a servlet. It uses an [classname]`UploadHandler` implementation to handle the incoming file data.
18
18
19
-
[classname]`UploadHandler` is a functional interface that only requires the [methodame]`handleUploadRequest(UploadEvent)` to be implemented for receiving data or use one of the built-in implementations.
19
+
[classname]`UploadHandler` is a functional interface that only requires the [methodname]`handleUploadRequest(UploadEvent)` to be implemented for receiving data or use one of the built-in implementations.
20
20
21
21
The following built-in implementations of [classname]`UploadHandler` are available:
Copy file name to clipboardExpand all lines: articles/designing-apps/color.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ Should you need help generating a color palette, there are many tools available
27
27
Lumo's <</styling/lumo/lumo-style-properties/color#,color palette>> consists of grayscale shades, blue as the primary color, red for errors, green for success, yellow for warnings, and text colors:
28
28
29
29
.Lumo's Color Palette
30
-
image::images/color-palette.png[A grid of colors, with a color scale for grayscale, blue, red, greend, and yellow.]
30
+
image::images/color-palette.png[A grid of colors, with a color scale for grayscale, blue, red, green, and yellow.]
31
31
32
32
Follow the “less is more” approach when using color in your application. Limiting your color palette to a few strategic choices -- such as one primary color, a couple of accent shades, and neutral tones -- helps to create a clean, cohesive interface. This reduces visual clutter and ensures that important elements stand out. Keep it simple for a more intuitive and focused user experience.
Button addButton = new Button("Add Person", click -> {
244
244
persons.insertFirst("New person");
245
245
});
246
-
246
+
247
247
Button updateButton = new Button("Update first Person", click -> {
248
248
ValueSignal<String> first = persons.value().get(0);
249
249
first.update(text -> text + " updated");
250
250
});
251
-
251
+
252
252
UnorderedList list = new UnorderedList();
253
253
ComponentEffect.effect(list, () -> {
254
254
list.removeAll();
@@ -264,7 +264,7 @@ public class PersonList extends VerticalLayout {
264
264
}
265
265
----
266
266
267
-
Removing all list items and creating them again is not the most efficent soltuion. A helper method will be added later to bind child components in a more efficient way.
267
+
Removing all list items and creating them again is not the most efficient solution. A helper method will be added later to bind child components in a more efficient way.
268
268
269
269
The effect that creates new list item components will be run only when a new item is added to the list but not when the value of an existing item is updated.
270
270
@@ -343,7 +343,7 @@ If that is not possible and you are certain there's no risk for infinite loops,
Copy file name to clipboardExpand all lines: articles/flow/testing/end-to-end/advanced-concepts.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -320,7 +320,7 @@ class FirefoxParameterizedIT extends AbstractParameterizedTest {
320
320
----
321
321
--
322
322
323
-
Parameterized tests can also run on multiple remote browsers, using a similar setup. The main difference is that the base class should be annotated with [annotionname]`@RunOnHub`, and the subclasses should have a method annotated with [annotationname]`@BrowserConfiguration` that returns a [interfacename]`List` containing a single [classname]`DesiredCapabilities` item. Note that the subclasses must have `public` visibility to work with [annotationname]`@BrowserConfiguration` annotation.
323
+
Parameterized tests can also run on multiple remote browsers, using a similar setup. The main difference is that the base class should be annotated with [annotationname]`@RunOnHub`, and the subclasses should have a method annotated with [annotationname]`@BrowserConfiguration` that returns a [interfacename]`List` containing a single [classname]`DesiredCapabilities` item. Note that the subclasses must have `public` visibility to work with [annotationname]`@BrowserConfiguration` annotation.
Copy file name to clipboardExpand all lines: articles/tools/mpr/configuration/push.adoc
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,9 +8,9 @@ order: 3
8
8
9
9
= Push & MPR
10
10
11
-
To enable server push for any navigation target in MPR, add the [annotationame]`@Push` Flow annotation on the Flow application shell class. The application shell class is a plain Java class implementing the [interfacename]`AppShellConfigurator` interface.
11
+
To enable server push for any navigation target in MPR, add the [annotationname]`@Push` Flow annotation on the Flow application shell class. The application shell class is a plain Java class implementing the [interfacename]`AppShellConfigurator` interface.
12
12
13
-
The [annotationame]`@Push` annotation has similar parameters (except for the deprecated ones) as the ones used in the Vaadin 7 and 8.
13
+
The [annotationname]`@Push` annotation has similar parameters (except for the deprecated ones) as the ones used in the Vaadin 7 and 8.
14
14
15
15
See <<{articles}/flow/advanced/server-push#,Server Push>> for instructions how to configure push in Flow and the `@Push` annotation JavaDoc for descriptions on each parameter.
0 commit comments