已解决:此问题是由 NetBeans 的 Visual Web 插件添加的库引起的。
我尝试使用以下代码测试通过支持bean将GET参数传递到同一页面:
<f:metadata>
<f:viewParam name="link" value="#{testBean.link}"/>
</f:metadata>
<h:body>
<h:link value="Link 3" outcome="test" includeViewParams="true">
<f:param name="link" value="3"/>
</h:link>
<h:outputText value="Parameter is #{testBean.link}"/>
<h:outputText value="Param list: #{param}"/>
</h:body>
第一个问题是呈现的链接标记没有预期的网址test.xhtml?link=3
,而是test.xhtml
。
第二个是我注意到即使我自己在浏览器中输入了所需的网址,#{param}
表达式也会评估到预期的参数列表,但testBean.setLink
赢了“被叫。
这是支持bean的代码:
@ManagedBean
@RequestScoped
public class TestBean implements Serializable {
private String link = "";
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
System.out.println("LINK: " + link);
}
}
现在......我找到了一种方法来解决这个问题,方法是将@ManagedProperty (value="#{param.link}")
添加到bean的字段中(并从jsf页面中删除<f:metadata>
部分),但是从我在其他地方读到的内容相关帖子<f:viewParam>
方式也应该有效。
如果您对这些事情发生的原因有任何想法,我会非常感激...我已经花了足够的时间处理这样一个令人烦恼的问题:)