<f:viewParam>
と の使用に完全に行き詰まってい<f:viewAction>
ます。
このような類似の質問をいくつか読みましたが、まだ機能していません。
次のような簡単な例:
test.xhtml
<h:head>
<title>Test</title>
</h:head>
<h:body>
<f:view>
<f:viewParam name="reason" value="#{testBean.reason}"/>
<f:viewAction action="#{testBean.examineReason}"/>
</f:view>
<h:outputText value="Reason=#{testBean.reason}"/>
</h:body>
TestBean
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@RequestScoped
public class TestBean {
private String reason;
@PostConstruct
private void init() {
System.out.println("urlParameter: "
+ FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("reason"));
}
public void examineReason() {
System.out.println("Reason is " + reason);
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
System.out.println("Reason set: " + reason);
}
}
GET リクエストは、次によって開始されます。
<h:button outcome="/pages/test.jsf" value="GET">
<f:param name="reason" value="abcd" />
</h:button>
System.out レポートのみ:
urlParameter: abcd
f:viewParam も f:viewAction もまったく機能していないようです。
Tomcat 8.0.32 で Mojarra 2.2 と MyFaces 2.2 をテストしました
私は何が欠けていますか?
編集:
問題が解決しました:<f:metadata>
タグがありませんでした。さらに、 は<f:metadata>
の子であってはなりません<h:body>
。test.xhtml を次のように変更すると、うまくいきました。
<h:head>
<title>Test</title>
</h:head>
<body>
<f:view>
<f:metadata>
<f:viewParam name="reason" value="#{testBean.reason}"/>
<f:viewAction action="#{testBean.examineReason}"/>
</f:metadata>
</f:view>
<h:outputText value="Reason=#{testBean.reason}"/>
</body>