替换Wicket AjaxLink中的文本

时间:2011-02-23 20:26:51

标签: java ajax wicket

我在.java文件中创建了一个新的AjaxLink

add(new AjaxLink("link"){                                                                                                                                                                                                                                                                                                  
private static final long serialVersionUID = 1L;                                                                                                       

@Override                                                                                                                                              
public void onClick(AjaxRequestTarget target) {                                                                                                        
target.appendJavascript("window.open('http://www.cnn.com/2011/WORLD/africa/02/23/libya.protests/index.html?hpt="+T1+"')");              
}                                                                                                                                                      
});

并将其添加到我的.html文件

<a href="#" wicket:id="link">TEXT TO REPLACE</a> 

网址只是一个示例,但T1是动态的,我从我的.java文件中获取。我希望“TEXT TO REPLACE”等于T1字符串,但我不知道该怎么做。我尝试过创建一个Label并像

一样添加它
<a href="#" wicket:id="link"><span wicket:id="linkLbl"></span></a> 

但这会产生错误。

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

Label是正确的方向,但你必须确保在java代码中添加标签,它应该是你的ajax链接的子组件。

(旁注:您可能需要考虑使用<wicket:container>代替<span>。在这种情况下,它并不重要,但有些情况下需要额外的<span>代码会使你的HTML无效。)

答案 1 :(得分:0)

a)对链接和标签使用通用模型,b)不要忘记更新链接

IModel<String> model = // get model data from somewhere

add(new AjaxLink("link"){                                                                                                                                                                                                                                                                                                  
private static final long serialVersionUID = 1L;                                                                                                       

@Override                                                                                                                                              
public void onClick(AjaxRequestTarget target) {
target.addComponent(this); // update the link component
target.appendJavascript("window.open('http://www.cnn.com/2011/WORLD/africa/02/23"
  + "/libya.protests/index.html?hpt="+model.getObject()
     /* you probably want to encode this first */+"')");              
}                                                                                                                                                      
}).setOutputMarkupId().add(new Label("label",model));