我的當前平臺是NB 7 rc 1,我有一個只有一個「託管bean」的JSF 2應用程序。及時,我正在使用Tomcat 7.0.34。externalContext.getSession(false)返回null
這裏是發生錯誤的代碼:
@ManagedBean
@SessionScoped
public class CopyController implements Serializable {
private static final long serialVersionUID = 1L;
private String pathBancoSentencas;
private List<Arquivo> arquivosUpload;
private HttpSession session;
private List<String> listaPdfs;
public List<Arquivo> getArquivosUpload() {
return arquivosUpload;
}
public void setArquivosUpload(List<Arquivo> arquivosUpload) {
this.arquivosUpload = arquivosUpload;
}
public CopyController() {
arquivosUpload = new ArrayList<Arquivo>();
}
@PostConstruct
public void doInit() {
session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
pathBancoSentencas = (String)session.getAttribute("DIRETORIO_TRABALHO");
}
以及處理該請求之後,該例程調用這樣一個觀點:
<p:dataTable value="#{copyController.arquivosUpload}" var="arquivo" paginator="true" paginatorPosition="bottom"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">
<f:facet name="header">
Item processado
</f:facet>
<h:column>
<h:outputText value="#{arquivo.nome}" />
</h:column>
</p:dataTable>
但是,不顯示的視圖,該發生錯誤:
Caused by: java.lang.NullPointerException
at br.jus.tjmg.dspace.copy.CopyController.doInit(CopyController.java:54)
... 70 more
有人能幫助我嗎? 謝謝!
但它是之前創建的。在發生錯誤時,我的託管bean已經創建完畢。 那麼會話對象已經存在了? – BicaBicudo
如果(後)構造函數沒有完成(JSF不希望在它們引發異常的情況下將一個破壞的bean放入作用域),那麼這個bean不會被放入作用域。只有在成功調用(後)構造函數之後,該bean纔會被放入作用域。只有在那一刻,會議纔會被創建,如果還不可用的話。 – BalusC
我選擇了註釋「ManagedProperty」.... 謝謝! – BicaBicudo