Search code examples
isis

Apache ISIS external link


Let's say I have a domain object Customer. On this object I have an address to an external site.

@PropertyLayout(named = "Link", describedAs = "Clickable link to customer")
public String getLink() {
    return "http://www.customer.com";
}

In this case this will be shown as just text on the webpage. How do I create a clickable link in the wicket viewer from this?


Solution

  • There is a third-party extension: https://github.com/kev-m/isis-wicket-url/ This was done by Kevin Meyer, one of our committers.

    I've raised https://issues.apache.org/jira/browse/ISIS-1616 to incorporate this into the framework "proper".

    Meantime, you can add an action to open the link easily enough

    @Action(semantics=SemanticsOf.SAFE)
    @MemberOrder(named="link", sequence="1")
    public java.net.URL openLink() throws MalformedURLException {
        return new java.net.URL(getLink());
    }
    

    and just to finish it off, you could add this guard:

    public String disableOpenLink() {
        if(getLink() == null) { return "no link to open."; }
        try {
            openLink();
        } catch(MalformedURLException ex) {
            return "Bad link";
        }
        return null;
    }