1

已解决:该问题是由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>方法应该也可以正常工作。

如果您对为什么会发生这些事情有任何想法,我将不胜感激……我已经花了足够的时间来解决像这样一个令人讨厌的问题:)

4

0 回答 0