我发现了一些尝试使用视图参数设置值的奇怪行为。下面的代码不起作用...在使用 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>