如何使用带有相关文本的“锚点”(不可链接)

问题描述 投票:0回答:2

从这个问题(Hyperlink inside label field in 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>段落中创建链接。我如何使用Anchor对象在Vaadin中执行此操作?到目前为止我提出的最好的方法是使用水平布局,然后添加一个标签,一个achor,然后添加另一个标签 - 但这真的很难看,并且在技术上没有相同的效果(它不能正确包装) 。)另一种选择是不使用“锚”,而只是使用“HTML”组件,只是在任何地方创建ahref链接,但这似乎是一个小丑陋(虽然我认为这是一个很好的解决方法。)。 (我假设我可以通过在ahref调用中粘贴url链接来调用我构建的任何UI。)关于“正确的Java Vaadin”方法的想法吗?

vaadin vaadin12
2个回答
1
投票

Vaadin 10+为您提供(至少)三种处理此类案例的方法。你提到了两个......

用Java构建组件。您可以将内容包装在Div中,而不是使用文本组件在Div而不是Label中,而不是VerticalLayout。您可以通过扩展Composite来创建这种自定义组件。

第二种方法是使用你提到的HTML组件。

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

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


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()));
© www.soinside.com 2019 - 2024. All rights reserved.