Hola, Laura. Disculpa la tardanza (no sé si ya lo habrás resuelto). Vamos al grano.
Cuando EL busca el getter de una propiedad, mira el tipo de retorno. Cuando EL necesita escribir sobre dicha propiedad, EL espera el mismo tipo que el de retornosiempre debe devolver el tipo de dato de la propiedad. Saludos.
El post salió mal. Te lo vuelvo a decir:
Cuando EL busca el getter de una propiedad, mira e identifica el tipo de retorno. Luego, cuando necesita escribir en dicha propiedad, EL espera el mismo tipo de dato que devuelve el getter. Por lo tanto, EL espera que reciba un String.
Un getter siempre debe devolver el mismo tipo de dato de la propiedad. Cambia la devolución de getFecha a Date y solucionarás el problema.
Saludos.
Hola atodos, estoy realizando un datatable editable de primefaces y me da el siguiente error al modificar un campo en la tabla:
: javax.faces.component.UpdateModelException: javax.el.PropertyNotWritableException:pagina1.xhtml @47,113 value="#{comentario.fecha}": Propiedad 'fecha' no grabable para el tipo paquete.comentario
El campo fecha es date , por lo he puesto esto en la columa fecha del datatable
<p:column headerText="Comentario" sortBy="#{comentario.fecha}" >
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{comentario.fecha}" /></f:facet>
<f:facet name="input"><p:inputText value="#{comentario.fecha}" style="width:100%" >
<f:convertDateTime pattern="MM/dd/yyyy" />
</p:inputText></f:facet>
</p:cellEditor>
</p:column>
Y sigue dando error.
Clases utilizadas
public class Comentario implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idComentario")
private Integer idComentario;
@Column(name = "fecha")
@Temporal(TemporalType.TIMESTAMP)
private Date fecha;
public Comentario() {
}
public Integer getIdComentario() {
return idComentario;
}
public void setIdComentario(Integer idComentario) {
this.idComentario = idComentario;
}
public String getFecha() {
//return fecha;
SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
return formateador.format(fecha);
}
public void setFecha(Date fecha) {
this.fecha = fecha;
}
..........................................................................................................................................
@ManagedBean
@SessionScoped
public class EditComentarioView implements Serializable¨{
List<Comentario> comentarios;
--------------
public void onRowEdit(RowEditEvent event) {
Comentario comentario = (Comentario) event.getObject();
dao.updateComentarios(comentario);
FacesMessage msg = new FacesMessage("Comentario modificada","");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
Me da el siguiente error
Caused by: javax.el.PropertyNotWritableException: Propiedad 'fecha' no grabable para el tipo paquete.Comentario
at javax.el.BeanELResolver$BeanProperty.write(BeanELResolver.java:323)
at javax.el.BeanELResolver$BeanProperty.access$100(BeanELResolver.java:283)
at javax.el.BeanELResolver.setValue(BeanELResolver.java:125)
at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
at org.apache.el.parser.AstValue.setValue(AstValue.java:202)
at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)