[英]How to solve “Conversion Error setting value '2013-10-26' for 'null Converter'” in h:inputText with Date value?
当我按下插入按钮时,出现标题上指示的错误
空转换器的转换错误设置值“ 2013-10-26”
<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使用。 有关此的更多信息: 日期vs时间戳vs日历?
<h:inputText>
期望将String
作为值,并且在将数据发送到托管bean时,还期望class字段也来自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)中的<rich:calendar>
组件,它们分别提供<p:calendar>
和<rich:calendar>
组件。
您应该导入适当的Date
包:
import java.util.Date;
在Managed Bean中,您应该使用java.util.Date。 并指定转换器。 例如
<h:inputText id="date" required="true" requiredMessage="Hire Date"
value="#{empBean.empDetail.hireDate}">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
您可以为DateTimeConverter指定模式,也可以使用dateStyle,timeStyle,type。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.