Olá colegas,
Estou aprendendo JSF e estou com uma certa dificuldade em inserir a data atual na base de dados, talvez seja algo simples, mas já realizei algumas pesquisa e não tenho ideia de como fazer.
Acontece que exibo a data atual com o “#{chamadaBean.data}”, referenciando tal método no Bean no input “dataAbertura” que exibe essa data, só que com isso eu perco a referencia para a classe que é responsável pela persistência que deveria ser referenciada conforme os outros inputs, ex. “#{chamadaBean.chamadaEdicao.titulo}”.
Dialogo:
<p:dialog header="Nova chamada" widgetVar="edicaoChamadaDialog"
id="chamada-dialog" resizable="false" modal="true"
closeOnEscape="true">
<p:messages id="msgs-dialog" />
<p:defaultCommand target="salvar-button" scope="chamada-dialog" />
<h:panelGrid columns="4" id="painel-dialog">
<p:outputLabel value="Chamada" />
<p:inputText widgetVar="nrmChamada" readonly="true"/>
<p:outputLabel value="Data abertura"/>
<p:inputText id="dataAbertura" value="#{currentDate}" readonly="false">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:inputText>
<p:outputLabel value="Categoria" for="categoria" />
<p:selectOneMenu id="categoria" value="#{chamadaBean.chamadaEdicao.categoria}">
<f:selectItem itemLabel="Selecione" />
<f:selectItems value="#{chamadaBean.categoriaChamada}" var="categoria"
itemLabel="#{categoria.descricao}" itemValue="#{categoria}" />
</p:selectOneMenu>
<p:outputLabel value="Setor" for="setor"/>
<p:selectOneMenu id="setor" value="#{chamadaBean.chamadaEdicao.setor}">
<f:selectItem itemLabel="Selecione" />
<f:selectItems value="#{chamadaBean.setorChamada}" var="setor"
itemLabel="#{setor.descricao}" itemValue="#{setor}" />
</p:selectOneMenu>
<p:outputLabel value="Título" />
<p:inputText maxlength="30" value="#{chamadaBean.chamadaEdicao.titulo}"/>
<p:outputLabel value="Prioridade" for="prioridade" />
<p:selectOneMenu id="prioridade" value="#{chamadaBean.chamadaEdicao.prioridade}" >
<f:selectItem itemLabel="Selecione" />
<f:selectItems value="#{chamadaBean.prioridadeChamada}" var="prioridade"
itemLabel="#{prioridade.descricao}" itemValue="#{prioridade}" />
</p:selectOneMenu>
<p:outputLabel value="Descrição" />
<p:inputTextarea rows="10" cols="60" maxlength="1000" autoResize="false"
counter="display" counterTemplate="{0} caracters restantes."
value="#{chamadaBean.chamadaEdicao.descricao}"/>
<p:outputLabel />
<p:outputLabel />
<p:outputLabel />
<p:outputLabel id="display"/>
<p:outputLabel />
<p:outputLabel />
<p:outputLabel value="Anexo" />
<h:form enctype="multipart/form-data">
<p:growl id="messages" showDetail="true" />
<p:fileUpload value="#{fileUploadView.file}" mode="simple" style="simple"/>
<p:commandButton value="Submit" ajax="false" actionListener="#{fileUploadView.upload}" disabled="true" />
</h:form>
<p:outputLabel />
<p:outputLabel />
<p:outputLabel />
<h:panelGrid columns="2">
<p:commandButton value="Salvar" id="salvar-button"
action="#{chamadaBean.salvar}"
process="chamada-dialog" update="chamadas-table"
oncomplete="if (!args.validationFailed) PF('edicaoChamadaDialog').hide()"/>
</h:panelGrid>
</h:panelGrid>
</p:dialog>
Bean:
@Named
@ViewScoped
public class chamadaBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private Chamadas chamadas;
@Inject
private CadastroChamadaService cadastroChamada;
@Inject
private FacesMessages messages;
private List<Chamada> todasChamadas;
private Chamada chamadaEdicao = new Chamada();
private Chamada chamadaSelecionada;
public void prepararNovoCadastro() {
chamadaEdicao = new Chamada();
}
public void salvar() {
cadastroChamada.salvar(chamadaEdicao);
consultar();
messages.info("Chamada aberta com sucesso!");
RequestContext.getCurrentInstance().update(
Arrays.asList("frm:msgs", "frm:chamadas-table"));
}
public void excluir() {
cadastroChamada.excluir(chamadaSelecionada);
chamadaSelecionada = null;
consultar();
messages.info("Chamada excluída com sucesso!");
}
public void consultar() {
todasChamadas = chamadas.todas();
}
public List<Chamada> getTodasChamadas() {
return todasChamadas;
}
public Date getDataAtual(){
Calendar calendar = new GregorianCalendar();
Date date = new Date();
calendar.setTime(date);
return calendar.getTime();
}
Objeto:
@Entity
public class Chamada implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@NotNull
@Enumerated(EnumType.STRING)
private CategoriaChamada categoria;
@Past
@Temporal(TemporalType.DATE)
@Column(name = "data_abertura")
private Date dataAbertura;
@Past
@Temporal(TemporalType.DATE)
@Column(name = "dataini_atendimento")
private Date datainiAtendimento;
@Past
@Temporal(TemporalType.DATE)
@Column(name = "datafim_atendimento")
private Date dataFundacao;
@NotNull
@Column(name = "descricao", nullable = false, length = 1000)
private String descricao;
@NotNull
@Enumerated(EnumType.STRING)
private PrioridadeChamada prioridade;
@Column(name = "relatorio", length = 1000)
private String relatorio;
@NotNull
@Enumerated(EnumType.STRING)
private SetorChamada setor;
@NotNull
@Column(name = "titulo", length = 200)
private String titulo;
@Column(name = "situacao", length = 20)
private String situacao;
@Column(name = "user_abertura")
private Integer userAbertura;
@Column(name = "user_atendimento")
private Integer userAtendimento;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public CategoriaChamada getCategoria() {
return categoria;
}
public void setCategoria(CategoriaChamada categoria) {
this.categoria = categoria;
}
public Date getDataAbertura() {
return dataAbertura;
}
public void setDataAbertura(Date dataAbertura) {
this.dataAbertura = dataAbertura;
}
public Date getDatainiAtendimento() {
return datainiAtendimento;
}
public void setDatainiAtendimento(Date datainiAtendimento) {
this.datainiAtendimento = datainiAtendimento;
}
public Date getDataFundacao() {
return dataFundacao;
}
public void setDataFundacao(Date dataFundacao) {
this.dataFundacao = dataFundacao;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public PrioridadeChamada getPrioridade() {
return prioridade;
}
public void setPrioridade(PrioridadeChamada prioridade) {
this.prioridade = prioridade;
}
public String getRelatorio() {
return relatorio;
}
public void setRelatorio(String relatorio) {
this.relatorio = relatorio;
}
public SetorChamada getSetor() {
return setor;
}
public void setSetor(SetorChamada setor) {
this.setor = setor;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public Integer getUserAtendimento() {
return userAtendimento;
}
public void setUserAtendimento(Integer userAtendimento) {
this.userAtendimento = userAtendimento;
}
public String getSituacao() {
return situacao;
}
public void setSituacao(String situacao) {
this.situacao = situacao;
}
public Integer getUserAbertura() {
return userAbertura;
}
public void setUserAbertura(Integer userAbertura) {
this.userAbertura = userAbertura;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Chamada other = (Chamada) obj;
if (id == null) {
if (other.id != null) {
return false;
}
} else if (!id.equals(other.id)) {
return false;
}
return true;
}
}
A inserção é feita normalmente, só que não leva a data, acredito que pela referente, alguem poderia dar um luz de uma solução? Grato!