Implementation of the Ext Direct protocol with Java and Spring https://github.com/ralscha/extdirectspring/wiki
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ralph Schaer a5f62734e0 upgrade
2026-10-04 10:03:05 +02:00
.github/workflows upgrade 2026-08-30 20:49:38 +02:00
.mvn upgrade 2026-05-31 15:44:43 +02:00
src Fix lint issues 2026-09-06 19:08:33 +02:00
.editorconfig Upgrade libraries 2017-10-25 08:26:25 +02:00
.gitignore update JUnit version to 6.0.3 2026-03-16 19:28:19 +01:00
LICENSE Add license file 2015-10-02 17:24:49 +02:00
mvnw Go back to Java 17 2025-07-16 19:54:54 +02:00
mvnw.cmd Go back to Java 17 2025-07-16 19:54:54 +02:00
pom.xml upgrade 2026-10-04 10:03:05 +02:00
README.md Fix routing, upload escaping, and generic parameter binding 2026-09-06 17:26:39 +02:00
Taskfile.yml Add jspecify null handling annotations 2026-04-19 19:51:35 +02:00

ExtDirectSpring

Test Status

ExtDirectSpring is a library that connects Ext JS applications with a Java/Spring back end, by implementing the Ext Direct specification.

The library supports all the features of Ext Direct:

  • Configuration with annotations
  • Simple remote calls
  • Named parameters
  • Method batching
  • Form post
  • Form post with file upload
  • Polling

Remote method parameters support generic types, including nested collections and maps, Optional<T>, and type parameters inherited from a base class. For example:

@ExtDirectMethod
public void saveTeams(Map<String, List<Person>> teams) {
    // JSON objects in each team's list are bound to Person instances.
}

JSON API discovery (/api.js?format=json) includes the configured timeout, retry, buffering, and batch buffer limit settings, just like JavaScript discovery.

The JSON router returns HTTP 400 for malformed payloads, non-object batch entries, or requests without an action or method. It validates the entire batch before invoking methods. Polling URLs only invoke methods annotated with @ExtDirectMethod(ExtDirectMethodType.POLL).

Maven

ExtDirectSpring is available from the Central Maven Repository.

    <dependency>
      <groupId>ch.ralscha</groupId>
      <artifactId>extdirectspring</artifactId>
      <version>....</version>
    </dependency>

Support

If you have a question about extdirectspring post it on GitHub Discussions. Or if you want to report a bug or request a feature, please open an issue on GitHub Issues.

Minimum Requirements

  • 3.0.0: Spring 7.0.6, Servlet 6.1.0, Jackson 3.1.1, Java 17
  • 2.1.5: Spring 6.2.6, Servlet 6.1.0, Jackson 2.18.3, Java 17 (Jakarta)
  • 1.8.1: Spring 5.1.2, Servlet 3.0, Jackson 2.9, Java 1.8
  • 1.7.4: Spring 4.3.1, Servlet 3.0, Jackson 2.8, Java 1.6
  • 1.6.1: Spring 4.2.0, Servlet 3.0, Jackson 2.6, Java 1.6
  • 1.5.2: Spring 4.1.2, Servlet 3.0, Jackson 2.5, Java 1.6
  • 1.4.3: Spring 4.0.0, Servlet 3.0, Java 1.6
  • 1.3.9: Spring 3.2.1, Servlet 2.4, Java 1.6
  • 1.2.3: Spring 3.1.2, Servlet 2.4, Java 1.6
  • 1.1.3: Spring 3.0.7, Servlet 2.4, Java 1.5

Demo applications using extdirectspring