Визуализировать выходной текст с помощью selectOneMenu Ошибка: java.lang.NullPointerException
У меня проблема, когда я пытаюсь отобразить поле в зависимости от значений, выбранных в меню выбора. он не позволяет мне выбирать, он просто отображает исключение. как будто пытается получить количество детей без ожидания параметров
14-Jun-2014 13:21:08.256 SEVERE [http-nio-8084-exec-152] com.sun.faces.application.view.FaceletViewHandlingStrategy.handleRenderException Error Rendering View[/insalaire.xhtml]
javax.el.ELException: /insalaire.xhtml @32,85 value="#{personnel1Bean.nombreEnfants}": Error reading 'nombreEnfants' on type controller.Personnel1Bean
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:174)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.ELException: Error reading 'nombreEnfants' on type controller.Personnel1Bean
at javax.el.BeanELResolver.getValue(BeanELResolver.java:108)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:167)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
... 43 more
Caused by: java.lang.NullPointerException
at controller.Personnel1Bean.getNombreEnfants(Personnel1Bean.java:182)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 48 more
index.xhtml
<h:form id="form">
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="Nom personnel : " style="font-size: 18px" />
<p:selectOneMenu value="#{personnelBean.nom}" >
<f:selectItem itemValue="#{null}" itemLabel="--Séléctionner Nom" />
<f:selectItems value="#{personnelBean.listePersonnels}" var="personnel"
itemValue="#{personnel.nom}" itemLabel="#{personnel.nom}" />
<f:ajax listener="#{personnelBean.submit()}" render="display"/>
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="Prénom personnel : " style="font-size: 18px" />
<p:selectOneMenu value="#{personnel1Bean.cin}" id="display" >
<f:selectItem itemValue="#{null}" itemLabel="--Séléctionner Nom" />
<f:selectItems value="#{personnel1Bean.listePersonnels}" var="personnel"
itemValue="#{personnel.cin}" itemLabel="#{personnel.prenom}" />
<f:ajax listener="#{personnel1Bean.submit()}" render="dis"/>
</p:selectOneMenu>
</h:panelGrid>
<h:outputText value="Nombre d'enfants : "/>
<h:outputText id="dis" value="#{personnel1Bean.nombreEnfants}" />
</h:form>
personnel1Bean.java
package controller;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import model.services.PersonnelMetier;
import net.vo.Personnel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("view")
public class Personnel1Bean {
@Autowired
private PersonnelMetier personnelMetier;
private List<Personnel> listePersonnels;
private Personnel personnel;
private static String cin;
private static String nom;
private String prenom;
private Date dateNaissance;
private Date dateRecrutement;
private String telephone;
private Integer naffiliation;
private String compteBancaire;
private String situationFamiliale;
private Integer nombreEnfants;
@PostConstruct
public void init() {
listePersonnels = personnelMetier.getAllPersonnels();
}
public List<Personnel> getListePersonnels() {
System.out.println("hhhhhhhhhhhhhhhh");
String n = PersonnelBean.submit();
System.out.println("2"+ n);
listePersonnels = personnelMetier.getAllPersonnelbyNom(n);
return listePersonnels;
}
public static String submit()
{
System.out.println("cin" + cin);
return cin;
}
public Personnel getPersonnel() {
return personnel;
}
public void setPersonnel(Personnel personnel) {
this.personnel = personnel;
}
public void insert()
{
Personnel personnel = new Personnel();
personnel.setCin(getCin());
personnel.setNom(getNom());
personnel.setPrenom(getPrenom());
personnel.setDateNaissance(getDateNaissance());
personnel.setTelephone(getTelephone());
personnel.setDateRecrutement(getDateRecrutement());
personnel.setCompteBancaire(getCompteBancaire());
personnel.setNaffiliation(getNaffiliation());
personnel.setNombreEnfants(getNombreEnfants());
personnel.setSituationFamiliale(getSituationFamiliale());
personnelMetier.insert(personnel);
listePersonnels = personnelMetier.getAllPersonnels();
}
public void update()
{
System.out.println("fffffffffffffffffffffffff");
Personnel p = personnelMetier.getPersonnel(getPersonnel().getCin());
p.setCin(getPersonnel().getCin());
p.setNom(getPersonnel().getNom());
p.setPrenom(getPersonnel().getPrenom());
p.setDateNaissance(getPersonnel().getDateNaissance());
p.setTelephone(getPersonnel().getTelephone());
p.setDateRecrutement(getPersonnel().getDateRecrutement());
p.setCompteBancaire(getPersonnel().getCompteBancaire());
p.setNaffiliation(getPersonnel().getNaffiliation());
p.setNombreEnfants(getPersonnel().getNombreEnfants());
p.setSituationFamiliale(getPersonnel().getSituationFamiliale());
personnelMetier.update(personnel);
}
public void delete()
{ System.out.println("fhhhhhhhhhhhhhhhhhhhhhhhhhhhhf");
Personnel p = personnelMetier.getPersonnel(getPersonnel().getCin());
personnelMetier.delete(getPersonnel().getCin());
listePersonnels.remove(personnel);
personnel = null;
}
public PersonnelMetier getPersonnelMetier() {
return personnelMetier;
}
public void setPersonnelMetier(PersonnelMetier personnelMetier) {
this.personnelMetier = personnelMetier;
}
public void setListePersonnels(List<Personnel> listePersonnels) {
this.listePersonnels = listePersonnels;
}
public String getCin() {
return cin;
}
public void setCin(String cin) {
this.cin = cin;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public Date getDateNaissance() {
return dateNaissance;
}
public void setDateNaissance(Date dateNaissance) {
this.dateNaissance = dateNaissance;
}
public Date getDateRecrutement() {
return dateRecrutement;
}
public void setDateRecrutement(Date dateRecrutement) {
this.dateRecrutement = dateRecrutement;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Integer getNaffiliation() {
return naffiliation;
}
public void setNaffiliation(Integer naffiliation) {
this.naffiliation = naffiliation;
}
public String getCompteBancaire() {
return compteBancaire;
}
public void setCompteBancaire(String compteBancaire) {
this.compteBancaire = compteBancaire;
}
public String getSituationFamiliale() {
return situationFamiliale;
}
public void setSituationFamiliale(String situationFamiliale) {
this.situationFamiliale = situationFamiliale;
}
public Integer getNombreEnfants() {
String cin = submit();
Personnel p = personnelMetier.getPersonnel(cin);
nombreEnfants = p.getNombreEnfants();
return nombreEnfants;
}
public void setNombreEnfants(Integer nombreEnfants) {
this.nombreEnfants = nombreEnfants;
}
}
personnelBean.java
package controller;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import model.services.PersonnelMetier;
import net.vo.Personnel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("view")
public class PersonnelBean {
@Autowired
private PersonnelMetier personnelMetier;
private List<Personnel> listePersonnels;
private Personnel personnel;
private static String cin;
private static String nom;
private String prenom;
private Date dateNaissance;
private Date dateRecrutement;
private String telephone;
private Integer naffiliation;
private String compteBancaire;
private String situationFamiliale;
private Integer nombreEnfants;
@PostConstruct
public void init() {
listePersonnels = personnelMetier.getAllPersonnels();
}
public List<Personnel> getListePersonnels() {
return listePersonnels;
}
public Personnel getPersonnel() {
return personnel;
}
public void setPersonnel(Personnel personnel) {
this.personnel = personnel;
}
public static String submit()
{
System.out.println("1" + nom);
return nom;
}
public void insert()
{
Personnel personnel = new Personnel();
personnel.setCin(getCin());
personnel.setNom(getNom());
personnel.setPrenom(getPrenom());
personnel.setDateNaissance(getDateNaissance());
personnel.setTelephone(getTelephone());
personnel.setDateRecrutement(getDateRecrutement());
personnel.setCompteBancaire(getCompteBancaire());
personnel.setNaffiliation(getNaffiliation());
personnel.setNombreEnfants(getNombreEnfants());
personnel.setSituationFamiliale(getSituationFamiliale());
personnelMetier.insert(personnel);
listePersonnels = personnelMetier.getAllPersonnels();
}
public void update()
{
System.out.println("fffffffffffffffffffffffff");
Personnel p = personnelMetier.getPersonnel(getPersonnel().getCin());
p.setCin(getPersonnel().getCin());
p.setNom(getPersonnel().getNom());
p.setPrenom(getPersonnel().getPrenom());
p.setDateNaissance(getPersonnel().getDateNaissance());
p.setTelephone(getPersonnel().getTelephone());
p.setDateRecrutement(getPersonnel().getDateRecrutement());
p.setCompteBancaire(getPersonnel().getCompteBancaire());
p.setNaffiliation(getPersonnel().getNaffiliation());
p.setNombreEnfants(getPersonnel().getNombreEnfants());
p.setSituationFamiliale(getPersonnel().getSituationFamiliale());
personnelMetier.update(personnel);
}
public void delete()
{ System.out.println("fhhhhhhhhhhhhhhhhhhhhhhhhhhhhf");
Personnel p = personnelMetier.getPersonnel(getPersonnel().getCin());
personnelMetier.delete(getPersonnel().getCin());
listePersonnels.remove(personnel);
personnel = null;
}
public PersonnelMetier getPersonnelMetier() {
return personnelMetier;
}
public void setPersonnelMetier(PersonnelMetier personnelMetier) {
this.personnelMetier = personnelMetier;
}
public void setListePersonnels(List<Personnel> listePersonnels) {
this.listePersonnels = listePersonnels;
}
public String getCin() {
return cin;
}
public void setCin(String cin) {
this.cin = cin;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public Date getDateNaissance() {
return dateNaissance;
}
public void setDateNaissance(Date dateNaissance) {
this.dateNaissance = dateNaissance;
}
public Date getDateRecrutement() {
return dateRecrutement;
}
public void setDateRecrutement(Date dateRecrutement) {
this.dateRecrutement = dateRecrutement;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Integer getNaffiliation() {
return naffiliation;
}
public void setNaffiliation(Integer naffiliation) {
this.naffiliation = naffiliation;
}
public String getCompteBancaire() {
return compteBancaire;
}
public void setCompteBancaire(String compteBancaire) {
this.compteBancaire = compteBancaire;
}
public String getSituationFamiliale() {
return situationFamiliale;
}
public void setSituationFamiliale(String situationFamiliale) {
this.situationFamiliale = situationFamiliale;
}
public Integer getNombreEnfants() {
return nombreEnfants;
}
public void setNombreEnfants(Integer nombreEnfants) {
this.nombreEnfants = nombreEnfants;
}
}
редактировать: я сделал некоторые изменения: я удалил бизнес-логику из геттера. теперь я не получаю исключения, но не получаю значение поля при выборе. у меня нет доступа к методу loadNombreEnfants ()
Personnel1Bean
public void ajaxListener(AjaxBehaviorEvent event) {
nombreEnfants = loadNombreEnfants();
}
private Integer loadNombreEnfants() {
System.out.println("FFFFFFFFFFF");
String cin = submit();
System.out.println("CIN" + cin);
Personnel p = personnelMetier.getPersonnel(cin);
nombreEnfants = p.getNombreEnfants();
System.out.println(nombreEnfants);
return nombreEnfants;
}
public Integer getNombreEnfants() {
return nombreEnfants;
}