Skip to content

fix(admin): render the theme page again with the install-by-name form - #3465

Merged
marevol merged 1 commit into
mainfrom
fix/admin-theme-install-form
Sep 23, 2026
Merged

marevol merged 1 commit into
mainfrom
fix/admin-theme-install-form

Conversation

@marevol

@marevol marevol commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Why

System > Theme (/admin/theme/) returns 200 but its HTML stops part-way, at the "install by name" form, with no closing </html>. fess.log logs Server error: GET /admin/theme/ on every view.

The form added in #3462 binds its name and version fields with la:text. The page is rendered with ThemeListForm, which only has defaultTheme, so LastaFlute fails on the first of them (FormPropertyNotFoundException for name) after the response has already started.

What changes

  • admin_theme.jsp: the install-by-name fields are plain <input type="text"> elements, like the hidden inputs of the catalogue rows next to them. The install action still binds both to ThemeInstallForm and validates them there.
  • AdminThemeActionTest: a new test checks that every property a form tag binds in admin_theme.jsp exists on ThemeListForm. It fails on the current page. The existing install-form test now pins the plain inputs.

Verification

  • mvn test -Dtest=AdminThemeActionTest,MessageTagUsageTest: 37 tests passed. The new test fails without the JSP change.
  • Tomcat JspC translates admin_theme.jsp with 0 errors.
  • Built the zip and logged in as admin:
    • Before: GET /admin/theme/ returns 200 with HTML ending inside the install-by-name form, and Server error: GET /admin/theme/ is logged.
    • After: the page renders through </html> and nothing is logged. Submitting the form with an unpublished theme name shows the usual "failed to install" message on the full page.

The "install by name" form on System > Theme bound its name and version
fields with la:text. The page is rendered with ThemeListForm, which only
has defaultTheme, so LastaFlute failed on the first of them
(FormPropertyNotFoundException for "name"). The response had already
started, so the browser got a 200 whose HTML stopped at that form, and
fess.log logged "Server error: GET /admin/theme/" on every view.

Use plain text inputs, as the catalogue rows next to it already do with
their hidden inputs. The install action still binds both fields to
ThemeInstallForm and validates them there.

AdminThemeActionTest now checks that every property a form tag binds in
admin_theme.jsp exists on ThemeListForm.
@marevol marevol added this to the 15.9.0 milestone Sep 23, 2026
@marevol marevol self-assigned this Sep 23, 2026
@marevol marevol added the task label Sep 23, 2026
@marevol
marevol merged commit 49b4da0 into main Sep 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant