我有一个支持bean和一个绑定到这个支持bean的XHTML。我有一个名为testerString的私有实例变量。
以下是backbean的摘录
public class LinkDataBackingBean {
Map<String, LinkInfo> linkMap = new HashMap<String, LinkInfo>();
List<LinkInfo> list = new ArrayList<LinkInfo>();
private String testerString = "http://www.google.com";
public String getTesterString() {
return testerString;
}
public LinkDataBackingBean() throws FileNotFoundException {
System.out.println("hello");
for(int i = 0; i < 10; i++){
list.add(new LinkInfo("hi", "www.google.com"));
//linkMap = getLinkData()
}
}
如您所见,我已使用http://www.google.com手动填充变量。在我的XHTML中有一段时间,我希望有人点击链接,然后它将转到testerString描述的URL。
我试过的一种方法就是传递变量。
<f:metadata>
<f:viewParam name="id" value="#{linkDataBackingBean.testerString}" />
</f:metadata>
然后:
<a href="#{param['id']}">TEST</a>
这不起作用,因为“TEST”根本没有显示为超链接(而如果我手动输入“http://www.google.com”作为前一个语句的值,它就显示为超链接,工作正常)。
我也尝试过以下方法,直接插入支持bean值(必须搞砸格式化或SO不会显示):
<a href="#{linkDataBackingBean.testerString}">TEST</a>
这产生了类似的结果 - TEST并没有作为带下划线的超链接出现。
我考虑使用outputLink,但遇到类似的问题,我确实将Text作为超链接,但它没有链接到我指定的域:
<h:outputLink id="link1" value="#{ linkDataBackingBean.testerString}">
<h:outputText value="TEST" />
</h:outputLink>
这链接到我整个项目的基础目录 - http://localhost:8080/name-of-my-proj/faces/
当我执行与上面相同的操作,但使用“http://www.google.com”填充值时,它会正确地进行。它似乎没有理解我对bootbean的引用。
让我感到困惑的是确定将TEST显示为超链接所需的内容,当有人点击它时,它们被定向到testerString指示的URL?肯定有一些我错过的JSF“管道”。