问题
when I press the insert button, I get the error indicated on the title
Conversion Error setting value '2013-10-26' for 'null Converter'
<h:form id="formulario">
<h:outputLabel for="date">Plazo</h:outputLabel>
<h:inputText id="date" required="true" requiredMessage="Campo Obligatorio" value="#{aaaNewDetalles.criterioAaa.plazo}"/>
<h:message for="date" style="color: red;"/>
<h:commandButton actionListener="#{aaaNewDetalles.add()}" value="Ingresar"/>
</h:form>
the form is managed by this class:
@ManagedBean(name = "aaaNewDetalles")
@ViewScoped
public class aaaNewDetallesBean {
private CriterioAaaController controller;
private CriterioAaa criterioAaa;
@PostConstruct
public void init(){
controller= new CriterioAaaController();
criterioAaa= new CriterioAaa();
}
public void add(){
controller.save(criterioAaa);
}
public CriterioAaa getCriterioAaa() {
return criterioAaa;
}
public void setCriterioAaa(CriterioAaa criterioAaa) {
this.criterioAaa = criterioAaa;
}
}
The object CriterioAaa:
import java.sql.Date;
@Table(name = "criterio_aaa", schema = "", catalog = "ciclos_calidad")
@Entity
public class CriterioAaa extends Entidad implements Serializable {
private Date plazo;
public Date getPlazo() {
return plazo;
}
public void setPlazo(Date plazo) {
this.plazo = plazo;
}
}
回答1:
There are two problems in your current approach:
You should use
java.util.Dateinsteadjava.sql.Date. JSF and other frameworks work with this type. Also,java.sql.Dateextendsjava.util.Datebut its purpose is basically for JDBC usage. More info about this: Date vs TimeStamp vs calendar?<h:inputText>expects aStringas value, and when sending the data to the managed bean, it also expects the class field is fromStringtype as well. In cases like this, you need to use a converter to tell JSF that thisStringin fact represents aDate. For this, you may use<f:convertDateTime>tag component.<h:inputText id="date" required="true" requiredMessage="Campo Obligatorio" value="#{aaaNewDetalles.criterioAaa.plazo}"> <f:convertDateTime pattern="yyyy-MM-dd" /> </h:inputText>
As a recommendation, you may use a calendar component from third party libraries like PrimeFaces or RichFaces whose provide <p:calendar> and <rich:calendar> component respectively.
回答2:
You should import the appropriate Date package :
import java.util.Date;
回答3:
In Managed Bean You should use java.util.Date. and specify the converter. e.g.
<h:inputText id="date" required="true" requiredMessage="Hire Date"
value="#{empBean.empDetail.hireDate}">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
you can specify the pattern for DateTimeConverter also you can use dateStyle,timeStyle, type.
来源:https://stackoverflow.com/questions/19613494/how-to-solve-conversion-error-setting-value-2013-10-26-for-null-converter