ビュー パラメータで値を設定しようとすると、奇妙な動作が発生することがわかりました。以下のコードは機能しません... view パラメータを使用してフォームを送信すると、id 値が設定されません。ただし、getId および setId メソッドからコメントを削除すると、id 値は正しく設定されます。ジェネリックにアクセスするときに JSF EL に問題がありますか、それとも何かひどく間違っていますか? 誰でもこの動作を説明できますか?
興味深いことに、例外はありません...値が設定されていないだけです。実際、抽象クラスの setId メソッドは呼び出されません。
public abstract class AbstractBusinessObjectAction<E, ID extends Serializable> {
protected abstract BusinessObjectManager<E, ID> getBusinessObjectManager();
public ID getId() {
ID id = getBusinessObjectManager().getId();
return id;
}
public void setId(final ID id) {
getBusinessObjectManager().setId(id);
}
}
@Named("configuration")
@ConversationScoped
public class ConfigurationAction extends AbstractBusinessObjectAction<ConfigurationParameter, Long> {
@Inject
private ConfigurationParameterManager manager;
protected BusinessObjectManager<ConfigurationParameter, Long> getBusinessObjectManager() {
return manager;
}
// public Long getId() {
// Long id = super.getId();
// return id;
// }
// public void setId(Long id) {
// super.setId(id);
// }
}
以下は、.xhtml からの例外です。
<f:metadata>
<f:viewParam id="entityIdParam" name="entityId" value="#{configuration.id}" />
</f:metadata>