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;
}
假设我有一个领域对象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;
}