我有一个 CDI 托管 bean,我想将请求参数设置为托管属性:
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
@Named
@RequestScoped
public class ActivationBean implements Serializable {
@ManagedProperty(value="#{param.key}")
private String key;
@ManagedProperty(value="#{param.id}")
private Long id;
// Getters+setters
URL 是domain/activate.jsf?key=98664defdb2a4f46a527043c451c3fcd&id=5
,但是属性永远不会设置和保留null
。
这是如何引起的,我该如何解决?
我知道我可以从ExternalContext
以下手动获取它们:
Long id = Long.parseLong(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"), 10);
String key = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("key");
但是,我宁愿使用注射。