Ma plate-forme actuelle est NB 7 rc 1 et j'ai une application JSF 2 avec un seul "bean géré". Avec le temps, j'utilise Tomcat 7.0.34.externalContext.getSession (false) renvoie la valeur null
Voici le code où l'erreur se produit:
@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");
}
Et après traitement de la demande, la routine appelle une vue comme ceci:
<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>
Cependant, la vue est pas affichée et cette une erreur se produit:
Caused by: java.lang.NullPointerException
at br.jus.tjmg.dspace.copy.CopyController.doInit(CopyController.java:54)
... 70 more
Quelqu'un peut-il m'aider? Merci!
Mais il a été créé avant. Au moment de l'erreur, mon bean géré avait déjà été créé. Donc l'objet de session existait déjà ?? – BicaBicudo
Le bean n'est pas mis dans la portée si les constructeurs (post) ne sont pas finis (JSF ne veut pas mettre un bean cassé dans la portée pour le cas où ils lèvent une exception). Ce n'est que lorsque les constructeurs (post) sont appelés avec succès que le bean est mis dans la portée. Seulement à ce moment-là, la session serait créée si elle n'était pas encore disponible. – BalusC
J'ai choisi l'annotation "ManagedProperty" .... Merci! – BicaBicudo