我需要在GWT中管理超链接对象。我需要的是:
1 - 将其添加到范围(如InlineLabel)
我尝试了Hyperlink affitta_3_span_1=new Hyperlink(result.get(i)[0], "");
,但它创造了这样的事情:
<div class="affitta_3_span_1">
<a href="#">t1</a>
</div>
实际上我需要这个:
<span class="affitta_3_span_1">
<a href="#">t1</a>
</span>
2 - 管理超链接历史记录
我把我的内部链接Hyperlink affitta_3_span_1=new Hyperlink(result.get(i)[1], "article/"+result.get(i)[0])
但我不知道在调用onValueChange()函数时如何在令牌上获取参数。我该怎么办?
干杯
答案 0 :(得分:1)
使用Anchor
。输出只是<a>
标记,其周围没有<div>
或 <span>
,但如果您需要<span>
,则可以添加一个HTML面板。
要设置历史记录可以访问的网址,只需在开头添加#
即可。像
myAnchor.setText(result.get(i)[1]);
myAnchor.setUrl("#article/"+result.get(i)[0]);
现在,当您单击myAnchor时,onValueChange将传递令牌“article / whatever”。不幸的副作用是您的网址看起来像http://example.com/#article/whatever,但这是仅使用GWT将令牌转移到History对象的唯一方法。
答案 1 :(得分:1)
对于第一个问题,请使用Anchor
,因为它已内联。
对于第二个,你需要“听”&#39;通过在您的课程中延长ValueChangeHandler
并致电History.addValueChangeHandler(this);
来改变历史事件。例如,
class MyClass implements ValueChangeHandler<String> {
public MyClass {
...
History.addValueChangeHandler(this);
}
@Override
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if (token.equals("foo")) {
// go to one page
} else if token.equals("bar")) {
// go to another page
}
}
}
答案 2 :(得分:0)
如果您只需要链接上的ClickHandler且没有历史记录支持,则可以使用Anchor窗口小部件,该窗口小部件基于<a>
标记,默认情况下为display: inline
。< / p>