【问题标题】:GWT - Two Question on Hyperlink - Manage its History token parameter + insert it in a spanGWT - 关于超链接的两个问题 - 管理其历史令牌参数 + 将其插入跨度
【发布时间】:2012-11-23 00:44:05
【问题描述】:

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

干杯

【问题讨论】:

    标签: gwt hyperlink gwt-history


    【解决方案1】:

    使用Anchor。输出只是一个&lt;a&gt; 标记,周围没有&lt;div&gt; &lt;span&gt;,但如果您需要&lt;span&gt;,您可以使用HTML 面板添加它。

    要设置历史可以访问的 URL,只需在开头加上 #。类似的东西

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

    现在,当您单击 myAnchor 时,onValueChange 将被传递令牌“article/whatever”。不幸的副作用是您的 url 看起来像 http://example.com/#article/whatever,但这是仅使用 GWT 将令牌获取到 History 对象的唯一方法。

    【讨论】:

    • 嗯...好吧!这种策略似乎也适用于超链接!当我使用 onValueChange 中的 getToken 时,我不明白如何在我的令牌值上选择参数。我需要一种字符串标记器?
    • 是的,您需要一个字符串标记器或其他一些机制来将“article/whatever”变成对您的应用程序有意义的东西。
    • 嗯,好的。我希望 GWT 提供其他一些进一步的方法(使用参数检查/验证等)。好的,我会为此做我自己的功能:) 根据您的经验:您建议使用 Anchor 或 Hyperlink?
    【解决方案2】:

    对于第一个问题,使用 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
        }
      }
    }
    

    【讨论】:

      【解决方案3】:

      如果您的链接只需要 ClickHandler 而没有历史记录支持,则可以使用 Anchor 小部件,该小部件基于默认具有 display: inline&lt;a&gt; 标记。

      【讨论】:

      • 嗯,是的...我需要历史支持:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2014-08-16
      • 1970-01-01
      相关资源
      最近更新 更多