GWT - 关于超链接的两个问题 - 管理其历史记录标记参数+将其插入跨度

时间:2010-11-22 13:55:17

标签: gwt hyperlink gwt-history

我需要在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()函数时如何在令牌上获取参数。我该怎么办?

干杯

3 个答案:

答案 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>