GWT - Два вопроса о гиперссылке - Управление его параметром токена истории + вставка его в диапазон - PullRequest
0 голосов
/ 22 ноября 2010

Мне нужно управлять объектом гиперссылки в 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 ]

1 голос
/ 23 ноября 2010

Используйте Anchor. Вывод - это просто тег <a>, в котором нет <div> или <span>, но если вам нужен <span>, вы можете добавить его с панелью HTML.

Чтобы установить URL, к которому может обращаться история, просто поставьте # в начале. Что-то вроде

myAnchor.setText(result.get(i)[1]);
myAnchor.setUrl("#article/"+result.get(i)[0]);

Теперь, когда вы нажимаете myAnchor, onValueChange будет передаваться токен «article / что угодно». К сожалению, побочный эффект заключается в том, что ваши URL выглядят как http://example.com/#article/whatever,, но это единственный способ получить токен для объекта History с помощью всего лишь GWT.

1 голос
/ 24 ноября 2010

Для первого вопроса используйте Anchor, поскольку он встроен.

Для второго вам нужно «прослушать» события изменения истории, расширив 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
    }
  }
}
0 голосов
/ 22 ноября 2010

Если вам нужен только ClickHandler для вашей ссылки и нет поддержки истории, вы можете использовать виджет Anchor , который основан на теге <a>, который по умолчанию имеет display: inline.

...