解決済み:この問題は、 NetBeans用のVisualWebプラグインによって追加されたライブラリが原因で発生していました。
次のコードを使用して、バッキング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
。2つ目は、ブラウザに目的の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>
方法も同様に機能するはずです。
これらのことが起こる理由について何かアイデアがあれば、私は感謝しているでしょう...私はこのような少し厄介な問題に十分な時間を費やしました:)