diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
index b5ece7e..30cae98 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
@@ -16,6 +16,8 @@
 import java.time.temporal.TemporalAccessor;
 import java.util.Optional;
 import javax.inject.Inject;
+import javax.transaction.Transactional;
+import javax.ws.rs.BadRequestException;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
 import javax.ws.rs.NotFoundException;
@@ -24,6 +26,8 @@
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import org.jboss.logging.Logger;
+import org.jsoup.Jsoup;
+import org.jsoup.safety.Whitelist;
 
 @Path("/wiki")
 public class WikiResource {
@@ -66,10 +70,25 @@
   @POST
   @Path("/{pageName}")
   @Authenticated
+  @Transactional
   public void updatePage(
       @PathParam("pageName") String pageName,
-      @FormParam("title") String title,
-      @FormParam("content") String content) {
+      @FormParam("wiki-title") String title,
+      @FormParam("wiki-content") String content) {
+
+    if (title == null && content == null) {
+      // No changes, nothing to do.
+      return;
+    }
+
+    if (title != null) {
+      // Remove markup.  Reject whitespace.
+      title = Jsoup.clean(title, Whitelist.none());
+      if (!title.matches("\\w+")) {
+        throw new BadRequestException("title does not match \"\\w+\"");
+      }
+    }
+
     var userName = identity.getPrincipal().getName();
 
     Optional<WikiPageRevision> maybeCurrentRevision =
@@ -86,13 +105,13 @@
     var pageRevision =
         new WikiPageRevision(
             OffsetDateTime.now(),
-            title,
-            content,
+            title != null ? title : currentRevision.title,
+            content != null ? content : currentRevision.content,
             "html5",
             currentRevision.page,
-            User.find("name = ?1", userName).singleResult());
+            User.find("from BenkiUser u join u.nicknames n where ?1 = n", userName).singleResult());
 
-    WikiPageRevision.persist(pageRevision);
+    pageRevision.persistAndFlush();
   }
 
   @GET
diff --git a/src/main/resources/templates/benki/wiki/wikiPage.html b/src/main/resources/templates/benki/wiki/wikiPage.html
index 8ca34e7..f9f5214 100644
--- a/src/main/resources/templates/benki/wiki/wikiPage.html
+++ b/src/main/resources/templates/benki/wiki/wikiPage.html
@@ -11,6 +11,26 @@
   window.addEventListener('DOMContentLoaded', function() {
     let editor = ContentTools.EditorApp.get();
     editor.init('*[data-editable]', 'data-name');
+    editor.addEventListener('saved', async function (ev) {
+      let regions = ev.detail().regions;
+      if (Object.getOwnPropertyNames(regions).length === 0) {
+        // Nothing changed.
+        return;
+      }
+
+      this.busy(true);
+
+      let requestParams = new URLSearchParams();
+      for (let name of Object.getOwnPropertyNames(regions)) {
+        requestParams.append(name, regions[name]);
+      }
+
+      var response = await fetch("/wiki/{page.title}", {
+        method: 'POST',
+        body: requestParams
+      });
+      this.busy(false);
+    });
   });
 </script>
 {/head}
@@ -18,11 +38,13 @@
 {#body}
 <article id="wiki-page">
   <header>
-    <h1>{page.title}</h1>
+    <div data-editable data-name="wiki-title">
+      <h1>{page.title}</h1>
+    </div>
   </header>
 
   <main>
-    <div data-editable data-name="main-content">
+    <div data-editable data-name="wiki-content">
       {#with page}{content.raw}{/}
     </div>
   </main>
