已解决:该问题是由Visual Web插件为NetBeans添加的库引起的。
我正在尝试使用以下代码测试通过支持 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>
第一个问题是呈现的链接标签没有预期的 url
test.xhtml?link=3
,但是test.xhtml
.第二个是我注意到即使我自己在浏览器中输入所需的 URL,
#{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 的字段(并<f:metadata>
从 jsf 页面中删除该部分)来解决此问题的方法,但是从我在其他相关帖子中所读到的内容中,该<f:viewParam>
方法应该也可以正常工作。
如果您对为什么会发生这些事情有任何想法,我将不胜感激……我已经花了足够的时间来解决像这样一个令人讨厌的问题:)