Forum renderers & actions
Seeded example discussions, not real community posts. Try categories, topic and comment pagination, tagged quotes, draft editing and permission-aware actions.
Your browser-session sandbox is temporary, not published, and expires after 30 idle minutes. Simulated personas and OWNER/USER modes are not authentication. Editing: 64 rows, three modules per row. Forum: 128 topics, 512 comments. At most 32 visitor sandboxes; no rate-protection or production-readiness guarantee.
Java composition & forum API
The corresponding renderer composition below makes application-supplied values explicit parameters. The live controller supplies its category component, checked action URLs, body preview and thread-link functions, tag registry and current pagination snapshot. These functions are application policy, not framework defaults.
public static <T extends ForumCategoryData, C> Component categories(
List<T> values, C context, java.util.function.Supplier<? extends ForumCategoryComponent> component) {
return ForumCategoryRenderer.<T, C>builder().withCategoryComponentSupplier(component)
.build().render(values, context);
}
public static <T extends ForumTopicData, C> Component topics(
List<T> values, C viewer, ForumActionProvider<T, C> actions,
java.util.function.BiFunction<T, C, String> preview,
java.util.function.BiFunction<T, C, ForumTopicTitleLink> links,
ForumTagResolverRegistry tags, ForumTopicRenderer.TopicPagination pagination,
ForumTopicRenderer.TopicPaginationEndpointResolver endpoint) {
return ForumTopicRenderer.<T, C>builder().withActionProvider(actions)
.withBodyTextResolver(preview).withTitleLinkResolver(links).withResolverRegistry(tags)
.withPaginationHxTarget("#forum-main").withPaginationHxSwap("outerHTML")
.withPaginationEndpointResolver(endpoint).build().render(values, viewer, pagination);
}
Default category & custom navigation variant
The plain default category is a read-only summary. The live categories below use an application-supplied component to add real navigation links.
Example category
A default summary, not a navigation action.
3 topicsDefaultForumCategoryComponent.create().withCategoryId("specimen")
.withTitle("Example category")
.withDescription("A default summary, not a navigation action.").withTopicCount(3);The live example uses category, topic and comment renderers, default topic/comment components, ForumCollapsibleComposer, ForumActionProvider and DefaultForumActionProvider. Data interfaces are implemented by application views. ForumTagParser and a resolver registry expand the seeded quote tags; endpoints enforce the same simulated persona permissions shown in the controls.
Forum helper referenceForumTopicRenderer APIRelated API contracts
Simulated viewer persona
Simulated viewer (not authentication): Demo User [user-demo]
Categories
Pick a category to drill into topics.