0

从这个问题(Vaadin 12 中标签字段内的超链接)我能够使用 Vaadin 的 HTML 组件来创建自定义 html 代码(它工作得很好,包括放入 ahref 链接等)

然而,Vaadin 提供了“Anchor”组件,它似乎是创建链接的更强大(并且可能更安全)的方式,可用于导航到我构建的其他类或外部网站(甚至下载动态生成的流式传输的数据)。

但是,如果我想让普通的“类似标签”的文本和锚链接都出现在一个段落中怎么办?例如,在“普通 html”中,我可以这样做:

<p>
This is my normal text. 
Download <a href="/resources/excelTemplate.xlsx" download> this Excel file</a>
and follow the instructions therein
</p>

它会在我的<p>...</p>段落中的某处创建链接。如何在 Vaadin 中使用 Anchor 对象执行此操作?到目前为止,我想出的最好的方法是使用水平布局,然后添加一个标签、一个锚点,然后再添加一个标签——但这真的很难看,而且在技术上没有相同的效果(它不会正确包装.) 另一种选择是不使用“Anchor”,而只使用“HTML”组件并在任何地方创建 ahref 链接,但这似乎也有点丑陋(尽管我认为这是一个好的解决方法。)。(我假设我可以通过在 ahref 调用中粘贴 url 链接来调用我构建的任何 UI ......)对“正确的 Java Vaadin”方法的想法?

4

2 回答 2

1

Vaadin 10+ 为您提供(至少)三种处理这种情况的方法。你提到了两个..

用 Java 组合组件。代替 VerticalLayout,您可以将内容包装在 Div 中,并在 Div 中使用 Text 组件而不是 Label。您可以通过扩展 Composite 来制作这种自定义组件。

第二种选择是使用您提到的 HTML 组件。

第三种选择是创建自定义 html 聚合物模板并使用 PolymerTemplate 类连接到它。这将导致自定义组件的行为类似于第一个选项的自定义组件。这只是不同的实现方式。

三者中哪一个是正确的方法。从框架的角度来看,所有这些。哪一个适合您取决于您​​的偏好和应用。

于 2019-02-16T08:00:37.283 回答
1
Paragraph p = new Paragraph("para");
Anchor a = new Anchor("go", "www.go.com");
p.add(a);
p.addClickListener(e-> UI.getCurrent().navigate(a.getHref()));
于 2019-02-21T09:29:09.877 回答