This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 681f30fdbc1128a06829bb17fb5a37b17bdb4dd5 Author: a.huber <[email protected]> AuthorDate: Sun Oct 26 11:07:34 2025 +0100 CAUSEWAY-3916: href support (_JoupExt) --- .../causeway/commons/internal/html/_JsoupExt.java | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/commons/src/main/java/org/apache/causeway/commons/internal/html/_JsoupExt.java b/commons/src/main/java/org/apache/causeway/commons/internal/html/_JsoupExt.java index 228696c56d6..39bde5ddcff 100644 --- a/commons/src/main/java/org/apache/causeway/commons/internal/html/_JsoupExt.java +++ b/commons/src/main/java/org/apache/causeway/commons/internal/html/_JsoupExt.java @@ -62,6 +62,25 @@ public interface HtmlAppender3<T1, T2, T3> { Element appendTo(Element container, T1 model1, T2 model2, T3 model3); } + public record Href(String plain) { + /** + * on click causes the browser to navigate to the top of the page + */ + public static Href self() { + return new Href("#"); + } + /** + * on click does nothing + */ + public static Href empty() { + return new Href("javascript:;"); + } + public static Href validate(final String url) { + //TODO validate + return new Href(url); + } + } + // -- EVALUATOR LOGIC public Evaluator not(final Evaluator evaluator) { @@ -129,6 +148,23 @@ public Element type(final Element container, final String type) { // -- APPENDERS + public Element appendA(final Element container) { + return container.appendElement("a"); + } + public Element appendA(final Element container, final String cssClass) { + return container.appendElement("a") + .attr("class", cssClass); + } + public Element appendA(final Element container, Href href) { + return container.appendElement("a") + .attr("href", href.plain()); + } + public Element appendA(final Element container, final String cssClass, Href href) { + return container.appendElement("a") + .attr("class", cssClass) + .attr("href", href.plain()); + } + public Element appendDiv(final Element container) { return container.appendElement("div"); }
