在JSF中使用<f:param>和<f:paramview>传递GET参数</f:paramview> </f:param>

时间:2012-12-15 00:30:56

标签: java jsf

已解决:此问题是由 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>方式也应该有效。

如果您对这些事情发生的原因有任何想法,我会非常感激...我已经花了足够的时间处理这样一个令人烦恼的问题:)

0 个答案:

没有答案