当我按下插入按钮时,出现标题中指示的错误
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>
表单由此类管理:
@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;
}
}
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;
}
}
最佳答案
您目前的做法有两个问题:
你应该使用
java.util.Date
相反java.sql.Date
. JSF 和其他框架使用这种类型。另外,java.sql.Date
延伸java.util.Date
但它的目的基本上是供 JDBC 使用。有关此的更多信息:Date vs TimeStamp vs calendar?<h:inputText>
期望一个String
作为值,并且在将数据发送到托管 bean 时,它还期望类字段来自String
键入以及。在这种情况下,您需要使用转换器来告诉 JSF 这String
实际上代表一个Date
.为此,您可以使用<f:convertDateTime>
标记组件。<h:inputText id="date" required="true" requiredMessage="Campo Obligatorio" value="#{aaaNewDetalles.criterioAaa.plazo}"> <f:convertDateTime pattern="yyyy-MM-dd" /> </h:inputText>
作为建议,您可以使用来自第三方库的日历组件,例如 PrimeFaces 或 RichFaces,它们提供 <p:calendar>
和 <rich:calendar>
组件分别。
关于date - 如何解决 "Conversion Error setting value ' 2013-10-2 6' for ' null Converter'"in h :inputText with Date value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613494/