我正在使用GWtBootstrap的popover组件 - org.gwtbootstrap3.client.ui.Popover。我需要添加一些可调用java方法的可点击图像。 由于popover不允许您向其内容添加任何窗口小部件,我可以使用以下代码添加链接
final Popover popover = new Popover();
final SafeHtml html = new SafeHtmlBuilder().appendHtmlConstant("<a href='' title='test add link'>link on content</a>").toSafeHtml();
popover.setHtml(html);
然后使用其中一个解决方案Calling GWT Java function from JavaScript
调用Java方法但是这一切看起来都很难看,我还认为使用原始html添加链接/图像非常脆弱,并且容易受到攻击。
有没有更好的方法让Popover的内容具有GWT小部件,以便我们可以更好地控制它们,可能是扩展Popover类可能是一种选择。任何建议/提示/解决方案都会有很大的帮助。
答案 0 :(得分:0)
此问题的一个解决方案是在弹出窗口外创建一个正确的GWT按钮(ButtonA),使用弹出窗口中的按钮执行相同的操作。使用如下的html代码,我们可以创建一个按钮,然后单击ButtonA。我使用类似这种方法的方法来做到这一点。
Popover createPopoverWithButton(Runnable buttonAAction, String id)
{
SafeHtml popoverButtonHtml= new SafeHtmlBuilder()
.appendHtmlConstant("<button type=\"button\" id=\"myPopoverButton\" onclick=\"document.getElementById(\'" + id
+ "\').click()\">Click to invoke java method</button>");
Popover popover = new Popover("Title", popoverButtonHtml.asString());
Button buttonA = new Button();
buttonA.setId(id);
buttonA.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
buttonAAction.run();
}
});
buttonA.setVisible(false);
return popover;
}
正如我之前所说,这是对我在问题中描述的初始方法的改进。 对此的任何改进都是最受欢迎的,因为这个解决方案仍然有我们打算在GWT中避免的HTML / Javascript。