Boa tarde pessoal.
Estou tentando inserir a quantidade de itens diretamente em uma rich:datatable, entretanto, apesar do bind estar correto, ele não faz o set no atributo do bean.
Segue a página:
<rich:dataTable value="#{produtos}" var="_produto"
id="produtosDataTable" rows="15">
<rich:column>
<f:facet name="header">Quantidade</f:facet>
<h:inputText value="#{_produto.quantidade}" size="2" />
</rich:column>
<rich:column sortBy="#{_produto.categoria}"
filterBy="#{_produto.categoria}" filterEvent="onkeyup">
<f:facet name="header">Categoria</f:facet>
<h:outputText value="#{_produto.categoria}"></h:outputText>
</rich:column>
<rich:column sortBy="#{_produto.nome}"
filterBy="#{_produto.nome}" filterEvent="onkeyup">
<f:facet name="header">Produto</f:facet>
<h:outputText value="#{_produto.nome}"></h:outputText>
</rich:column>
<rich:column>
<h:commandButton
action="#{listaComprasItensManager.adicionar}"
value="Adicionar a Lista" />
</rich:column>
<f:facet name="footer">
<rich:datascroller for="produtosDataTable" />
</f:facet>
</rich:dataTable>
O atributo quantidade não está sendo populado no EntityBean. Ele é um atributo transient e possui get e set normalmente.
Segue a classe:
@Name("produto")
@Entity
public class Produto implements Serializable{
private static final long serialVersionUID = 2375123736077052214L;
private Integer id;
private String codigo;
private String categoria;
private String nome;
private String descricao;
private Double valor;
private Double valorPromocional;
private Calendar validadeValorPromocional;
private Double valorVigente;
private byte[] imagem;
private String tipo;
private Usuario mantenedor;
private Integer quantidade;
public Produto() {}
@Id
@SequenceGenerator(name="produto_seq_id", sequenceName="produto_seq_id")
@GeneratedValue(generator="produto_seq_id", strategy=GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
@Column(name="valor_promocional")
public Double getValorPromocional() {
return valorPromocional;
}
public void setValorPromocional(Double valorPromocional) {
this.valorPromocional = valorPromocional;
}
@Column(name="validade_valor_promocional")
public Calendar getValidadeValorPromocional() {
return validadeValorPromocional;
}
public void setValidadeValorPromocional(Calendar validadeValorPromocional) {
this.validadeValorPromocional = validadeValorPromocional;
}
@Transient
public Double getValorVigente() {
if((validadeValorPromocional == null) || (validadeValorPromocional.before(DataHora.getData(new Date(), "yyyy-MM-dd hh:mm")))){
valorVigente = valor;
}else{
valorVigente = valorPromocional;
}
return valorVigente;
}
public void setValorVigente(Double valorVigente) {
this.valorVigente = valorVigente;
}
@Lob
@Basic(fetch=FetchType.LAZY)
public byte[] getImagem() {
return imagem;
}
public void setImagem(byte[] imagem) {
this.imagem = imagem;
}
@Column(name="tipo_arquivo")
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
@ManyToOne(cascade=CascadeType.ALL)
public Usuario getMantenedor() {
return mantenedor;
}
public void setMantenedor(Usuario mantenedor) {
this.mantenedor = mantenedor;
}
@Transient
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
}
Alguem sabe o que pode estar acontecendo?