Apache ISIS 外部 link

Apache ISIS external link

假设我有一个领域对象Customer。在这个对象上,我有一个外部站点的地址。

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

在这种情况下,这将仅显示为网页上的文本。如何通过此在检票口查看器中创建可点击的 link?

我认为 Apache Isis 中没有为此提供开箱即用的解决方案。 您将需要为此推出自己的 Wicket 组件。例如,使用自定义注释 @ExternalLink 注释此 属性,然后注册一个 ComponentFactory 为此 属性 创建 Wicket ExternalLink 组件。例如,参见 https://github.com/isisaddons/isis-wicket-summernote/blob/master/cpt/src/main/java/META-INF/services/org.apache.isis.viewer.wicket.ui.ComponentFactory

有第三方扩展:https://github.com/kev-m/isis-wicket-url/ 这是由我们的提交者之一 Kevin Meyer 完成的。

我已经提出 https://issues.apache.org/jira/browse/ISIS-1616 将其纳入框架 "proper"。

同时,您可以添加一个操作来轻松打开 link

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

为了完成它,您可以添加这个守卫:

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