Ism*_*a90 3 jsf date converter
当我按下插入按钮时,我收到标题上指示的错误
'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>
Run Code Online (Sandbox Code Playgroud)
表单由此类管理:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
对象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;
}
}
Run Code Online (Sandbox Code Playgroud)
您当前的方法有两个问题:
您应该使用java.util.Date来代替java.sql.Date.JSF和其他框架适用于此类型.此外,java.sql.Date扩展java.util.Date但其目的基本上是用于JDBC使用.有关更多信息:Date vs TimeStamp vs calendar?
<h:inputText>期望一个Stringas值,当将数据发送到托管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>
Run Code Online (Sandbox Code Playgroud)作为建议,您可以使用第三方库中的日历组件,例如PrimeFaces或RichFaces,它们分别提供<p:calendar>和<rich:calendar>组件.