On This Page

We can break down any user interface into two fundamental operations: displaying information to the user and enabling user interaction through data input and action triggers. These operations are orchestrated by a flow, which evolves based on user actions and the current context.

With Mateu, this entire behavior can be described using plain Java.

How It Works

We begin by linking a URL to a Java class. This sets up the initial interaction—when a user navigates to that URL, Mateu renders information and UI elements based on the contents of the Java class.

From there, the behavior is entirely under your control:

  • Add a Java method (or a Callable field) and annotate it with @Action to expose it as a button in the UI.
    When the user clicks the button, the method executes on the server, and the UI updates based on its result.

  • To collect input from the user, simply add fields to your Java class. Mateu will automatically generate the appropriate UI controls, and user-entered values will populate the corresponding server-side fields before any method is called.

  • Alternatively, you can define method parameters to gather user input. Mateu will generate a form to collect that data before invoking the method on the server.

You can fine-tune what’s displayed using annotations and Java interfaces—but this is the core idea: define your UI’s structure, behavior, and flow directly from your backend code, with minimal overhead and maximum clarity.