PDA

View Full Version : Exception in a jsp


Esil2008
Jul 17th, 2007, 10:44 AM
Hello,

I would like to fill my combobox automaticlly from my data base. So i use this code in my JSP
<spring:bind path="intervenant.droit.droitId">
<td>
<select name="${status.expression}" value="${status.value}" rows="3" >
<c:forEach items="${optionsComboDroit}" var="optionComboDroit">
<c:choose>
<c:when test="${intervenant.droit!=null && intervenant.droit.droitId==optionComboDroit}">
<option selected>${optionComboDroit}</option>
</c:when>
<c:otherwise>
<option>${optionComboDroit}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</td>
</spring:bind>
In my class Intervenant.java, droit is an object, so i want to have droit.droitId, but if droit is null it cause this exception
Intervenant.java
package com.pia.agp.mapping;

import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.ToStringBuilder;


/** @author Hibernate CodeGenerator */
public class Intervenant implements Serializable {

/** identifier field */
private Integer intervenantId;

/** nullable persistent field */
private String intervenantNom;

/** nullable persistent field */
private String intervenantPrenom;

/** nullable persistent field */
private String intervenantLogin;

/** nullable persistent field */
private String intervenantMdp;

private String intervenantMdp2;

/** nullable persistent field */
private String intervenantEmail;

/** nullable persistent field */
private String intervenantTel;

/** nullable persistent field */
private String intervenantFonction;

/** persistent field */
private Date intervenantDatedebutcontrat;

/** persistent field */
private Date intervenantDatefincontrat;

/** persistent field */
private String coutjournalierexperianId;

/** persistent field */
private Droit droit;

/** full constructor */
public Intervenant(Integer intervenantId, String intervenantNom, String intervenantPrenom, String intervenantLogin, String intervenantMdp,String intervenantMdp2, String intervenantEmail, String intervenantTel, String intervenantFonction, Date intervenantDatedebutcontrat, Date intervenantDatefincontrat, String coutjournalierexperianId, long droitId) {
this.intervenantId = intervenantId;
this.intervenantNom = intervenantNom;
this.intervenantPrenom = intervenantPrenom;
this.intervenantLogin = intervenantLogin;
this.intervenantMdp = intervenantMdp;
this.intervenantMdp2 = intervenantMdp2;
this.intervenantEmail = intervenantEmail;
this.intervenantTel = intervenantTel;
this.intervenantFonction = intervenantFonction;
this.intervenantDatedebutcontrat = intervenantDatedebutcontrat;
this.intervenantDatefincontrat = intervenantDatefincontrat;
this.coutjournalierexperianId = coutjournalierexperianId;
//this.droitId = droitId;
}

/** default constructor */
public Intervenant() {
}

/** minimal constructor */
public Intervenant(Integer intervenantId, Date intervenantDatedebutcontrat, Date intervenantDatefincontrat, String coutjournalierexperianId, long droitId) {
this.intervenantId = intervenantId;
this.intervenantDatedebutcontrat = intervenantDatedebutcontrat;
this.intervenantDatefincontrat = intervenantDatefincontrat;
this.coutjournalierexperianId = coutjournalierexperianId;
//this.droitId = droitId;
}

public Integer getIntervenantId() {
return this.intervenantId;
}

public void setIntervenantId(Integer intervenantId) {
this.intervenantId = intervenantId;
}

public String getIntervenantNom() {
return this.intervenantNom;
}

public void setIntervenantNom(String intervenantNom) {
this.intervenantNom = intervenantNom;
}

public String getIntervenantPrenom() {
return this.intervenantPrenom;
}

public void setIntervenantPrenom(String intervenantPrenom) {
this.intervenantPrenom = intervenantPrenom;
}

public String getIntervenantLogin() {
return this.intervenantLogin;
}

public void setIntervenantLogin(String intervenantLogin) {
this.intervenantLogin = intervenantLogin;
}

public String getIntervenantMdp() {
return this.intervenantMdp;
}

public void setIntervenantMdp(String intervenantMdp) {
this.intervenantMdp = intervenantMdp;
}

public String getIntervenantMdp2() {
return this.intervenantMdp2;
}

public void setIntervenantMdp2(String intervenantMdp2) {
this.intervenantMdp2 = intervenantMdp2;
}

public String getIntervenantEmail() {
return this.intervenantEmail;
}

public void setIntervenantEmail(String intervenantEmail) {
this.intervenantEmail = intervenantEmail;
}

public String getIntervenantTel() {
return this.intervenantTel;
}

public void setIntervenantTel(String intervenantTel) {
this.intervenantTel = intervenantTel;
}

public String getIntervenantFonction() {
return this.intervenantFonction;
}

public void setIntervenantFonction(String intervenantFonction) {
this.intervenantFonction = intervenantFonction;
}

public Date getIntervenantDatedebutcontrat() {
return this.intervenantDatedebutcontrat;
}

public void setIntervenantDatedebutcontrat(Date intervenantDatedebutcontrat) {
this.intervenantDatedebutcontrat = intervenantDatedebutcontrat;
}

public Date getIntervenantDatefincontrat() {
return this.intervenantDatefincontrat;
}

public void setIntervenantDatefincontrat(Date intervenantDatefincontrat) {
this.intervenantDatefincontrat = intervenantDatefincontrat;
}

public String getCoutjournalierexperianId() {
return this.coutjournalierexperianId;
}

public void setCoutjournalierexperianId(String coutjournalierexperianId) {
this.coutjournalierexperianId = coutjournalierexperianId;
}
/*
public long getDroitId() {
return this.droitId;
}

public void setDroitId(long droitId) {
this.droitId = droitId;
}
*/
public Droit getDroit() {
return this.droit;
}

public void setDroit(Droit droit) {
this.droit=droit;
}

public String toString() {
return new ToStringBuilder(this)
.append("intervenantId", getIntervenantId())
.toString();
}

}

Esil2008
Jul 17th, 2007, 10:44 AM
and Droit.java
package com.pia.agp.mapping;

import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;


/** @author Hibernate CodeGenerator */
public class Droit implements Serializable {

/** identifier field */
private Long droitId;

/** nullable persistent field */
private String droitDroit;

/** full constructor */
public Droit(Long droitId, String droitDroit) {
this.droitId = droitId;
this.droitDroit = droitDroit;
}

/** default constructor */
public Droit() {
}

/** minimal constructor */
public Droit(Long droitId) {
this.droitId = droitId;
}

public Long getDroitId() {
return this.droitId;
}

public void setDroitId(Long droitId) {
this.droitId = droitId;
}

public String getDroitDroit() {
return this.droitDroit;
}

public void setDroitDroit(String droitDroit) {
this.droitDroit = droitDroit;
}

public String toString() {
return new ToStringBuilder(this)
.append("droitId", getDroitId())
.toString();
}

}



can someone help me ?
thanks

dr_pompeii
Jul 17th, 2007, 01:31 PM
hello
but if droit is null it cause this exception
mmm, which??? :)

Marten Deinum
Jul 17th, 2007, 02:38 PM
You don't want to bind to the Id you want to bind to droit (and not the Id of droit). Register a PropertyEditor which converts your selected option to a Droit.


public class DroitPropertyEditor extends PropertyEditorSupport {

public void setAsText(final String text) {
if (StringUtils.hasText(text)) {
Droit droit = droitDao.findById(Long.parseLong(text));
setValue(droit);
} else {
super.setAsText(text);
}
}

public String getAsText() {
Object value = getValue();
String id = "";
if (value != null) {
id = ((Droit) value).getId();
}
return id;
}

}


With that in place your spring bind tags can be replaced with the new spring form tags


<form:select path="droit" multiselect="true" size="3">
<form:options items="${optionsComboDroit}"/>
</form>


I strongly suggest you take a close look at the shipped Spring sample applications as well as Chapter 13 (http://static.springframework.org/docs/reference/mvc.html) of the reference guide. That explains a lot on how to use SpringMVC

Esil2008
Jul 18th, 2007, 03:27 AM
Ok , thank you very much for your help.

Esil2008
Jul 18th, 2007, 05:03 AM
Hello,
I have just read again chapter 13. But i have always the same problem, because i dont now how i can initialize droitDAO.
i tried to do this, but i didn't work
IDaoIntervenant daoDroit = (IDaoIntervenant) (new XmlBeanFactory(new ClassPathResource(
"applicationContext.xml"))).getBean("daoDroit");

thanks

Marten Deinum
Jul 18th, 2007, 05:11 AM
You are missing a lot of basic here... As I stated in my previous post take a look at the sample applications and read the reference guide. Chapter 3 is a good starting point.

Just as a pointer you really don't want to creata new BeanFactory (I strongly suggest you use ClasspathXmlApplicationContext!) each time you need a bean. If you want memory and performance issue that is the road to go.

Read-up on 'inversion of control' and 'dependency injection'. You really need to get your basics sorted out before moving further.

Esil2008
Jul 18th, 2007, 05:27 AM
ok i will read this chapter,
thanks