ビュースコープマネージドBeanのPOSTコンストラクトメソッドでquery-stringパラメータへのアクセス
質問
次のXHTMLページがあります。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Test</title>
</h:head>
<f:metadata>
<f:viewParam name="id" value="#{testManagedBean.id}" maxlength="20"/>
</f:metadata>
<h:body>
<h:form id="form" prependId="true">
</h:form>
</h:body>
</html>
.
管理対象Beanは上記のJSFページに対応しています。
@ManagedBean
@ViewScoped
public final class TestManagedBean implements Serializable
{
private static final long serialVersionUID = 1L;
private Long id;
@PostConstruct
private void init() {
System.out.println("id = "+id);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
.
URL - id
を使用して、https://localhost:8181/Project-war/admin_side/Test.jsf?id=1
をquery-stringパラメータとして渡します。
id
メソッドでinit()
を表示しようとすると、常にnull
です。
これはデモです。実際には、<f:viewParam>
は実際に<ui:define name="metaData">
の内側に配置され、マスターテンプレート<ui:insert name="metaData"/>
が定義されています。
私はここから見下ろしていますか?
iは、このようなパラメータを数回渡し、適切なコンバータを使用してJPAエンティティに変換されますが、スカラー値が管理対象Beanのプロパティに設定されていない理由はわかりません。id
のタイプを文字列に変更しようとしましたが、どちらもヘルプがありませんでした(NOR @ManagedProperty(value="#{id}")
が機能しました)。
解決
所属していません StackOverflow