3

当我按下插入按钮时,我得到标题上指示的错误

'null Converter' 的转换错误设置值'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;
    }

}
4

3 回答 3

6

您当前的方法存在两个问题:

  1. 你应该java.util.Date改用java.sql.Date. JSF 和其他框架使用这种类型。此外,java.sql.Dateextendsjava.util.Date但其目的基本上是用于 JDBC 使用。有关此的更多信息:日期、时间戳和日历?

  2. <h:inputText>期望 aString作为值,并且在将数据发送到托管 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>组件。

于 2013-10-27T05:17:58.673 回答
0

您应该导入适当的Date包:

import java.util.Date;
于 2013-10-27T01:10:37.357 回答
0

在托管 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。

于 2014-05-07T06:46:02.160 回答