在Liferay结构/模板中使用外部链接

在Liferay结构/模板中使用外部链接,liferay,liferay-6.2,Liferay,Liferay 6.2,目前我正在Liferay 6.2中开发结构/模板组合,发现了一个问题 在我的结构中,用户可以键入指向外部站点的url(“www.google.com”例如): 在我的模板中,我想要一个指向该页面的链接,但当前代码只是将结构的字符串值附加到我的站点的BaseURL。比如www.company-url.de/web/www.google.de <a href="${website.getData()}">More information</a> (我无法提供正确的U

目前我正在Liferay 6.2中开发结构/模板组合,发现了一个问题

在我的结构中,用户可以键入指向外部站点的url(“www.google.com”例如):


在我的模板中,我想要一个指向该页面的链接,但当前代码只是将结构的字符串值附加到我的站点的BaseURL。比如www.company-url.de/web/www.google.de

<a href="${website.getData()}">More information</a>

(我无法提供正确的URL,因为我不确定是否允许)

有没有办法告诉Liferay将字符串用作独立的url,而不是附加它


非常感谢您的帮助。

问题是您正在使用“.getData()”方法,正如您所说,它只是一个字符串。请尝试改用“.getText()”:



希望它有帮助,并让我知道它是否有效:)

检查
${website.getData()}
是否包含“:”,如果不是自己预先编写的:

<#assign myURL = website.getData()>

<#if !website.getData()?matches(".*:.*")>
    <#assign myURL = "http://" + myURL>
</#if>

<a href="${myURL}">More information</a>


然而,这绝对不足以验证URL…

Liferay说“getText”是未定义的。(是的,我使用了brakcets;))这是我想要避免的解决方案,因为我不确定用户键入什么作为url。例如,他可能还会写https://等。我希望有一种方法可以自动地做到这一点,而你的if子句的顺序不是错误的吗?我认为您已经在URL中使用了两次“http://”,您应该使用
contains(“:”)
。顺序正确,如
正在否定条件。哦,没有看到“!”,sry;)你应该检查的定义
www.google.de
是主机名,但不是URL。URL始终是绝对的-包括方案。其他所有内容都应与当前页面相关。感谢您告诉我这样一个事实。但我仍然认为人们应该仍然能够理解我的问题是什么。即使用户真的输入了一个url,它仍然只是出现在当前页面上。请自己尝试:如果用户输入了一个绝对url(
http://www.google.de/
)它不会附加到当前页面。这就是问题所在。我不能确定用户是否使用该方案。正因为如此,问题才存在。是的,我认为URL部分有问题,我没有正确指定。下面提到的
有什么问题?在这种情况下,仅转换非绝对URL。
<a href="${website.getText()}">More information</a>
<#assign myURL = website.getData()>

<#if !website.getData()?matches(".*:.*")>
    <#assign myURL = "http://" + myURL>
</#if>

<a href="${myURL}">More information</a>