2016-05-16 24 views
1

私は初心者のJava開発者です。私はすでにHibernate 5上にあったプロジェクトの上にPrimeFaces 5.2で実行される基本的なCRUDを取得しようとしています。いずれかのボタンをクリックするとモーダルダイアログが表示されません。私はウェブの周りから多くのことを試しましたが、すべてが大丈夫と思われるので、私は本当に立ち往生しています。モーダルダイアログがPrimeFaces 5に表示されない

私は本当にあなたがこれに流すことができる光に感謝します。ありがとうございました!

index.htmlを

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head> 
    <title>Gerenciador de Tarefas</title> 
</h:head> 
<h:body> 
    <p:layout fullPage="true"> 
     <p:layoutUnit position="north" width="200" header="Atividades" resizable="true" closable="true" collapsible="true"> 
      <h:form prependId="false"> 
       <p:commandLink value="Nova Tarefa" actionListener="#{tarefaController.prepararAdicionarTarefa}" update="infosTarefa" oncomplete="dialogGerTarefa.show()"/> 
      </h:form> 
     </p:layoutUnit> 

     <p:layoutUnit position="center"> 
      <h1>Gerenciador de Tarefas</h1> 
      <br/> 
      <h:form prependId="false"> 
       <p:dataTable id="tabela" var="tarefa" value="#{tarefaController.listarTarefas}"> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Título"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.titulo}" /> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Prazo de execução"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.prazo_execucao}"/> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Detalhes"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.detalhes}"/> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Responsável"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.responsavel}"/> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Urgente"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.urgente}"/> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Status"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.status}"/> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Data de conclusao"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.data_conclusao}"/> 
        </p:column> 

        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Descricao da conclusao"/> 
         </f:facet> 
         <h:outputText value="#{tarefa.descricao_conclusao}"/> 
        </p:column> 

        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Alterar"/> 
         </f:facet> 
         <p:commandButton actionListener="#{tarefaController.prepararAlterarTarefa}" ajax="false" value="Alterar" update="infosTarefa" oncomplete="dialogGerTarefa.show()"/> 
        </p:column> 

        <p:column> 
         <f:facet name="header"> 
          <h:outputText value="Excluir"/> 
         </f:facet> 
         <h:commandLink action="#{tarefaController.excluirTarefa}" value="Excluir"/> 
        </p:column> 
       </p:dataTable> 
      </h:form> 
     </p:layoutUnit> 
    </p:layout> 

    <p:dialog header="Gerencia de Tarefa" widgetVar="dialogGerTarefa" resizable="false" modal="true" width="500"> 
     <h:form prependId="false"> 
      <h:panelGrid id="infosTarefa" columns="2" style="margin-bottom:10px"> 

       <h:outputLabel for="titulo" value="Título:" /> 
       <h:inputText id="titulo" value="#{tarefaController.tarefa.titulo}"/> 

       <h:outputLabel for="prazo_execucao" value="Prazo de execução:" /> 
       <h:inputText id="prazo_execucao" value="#{tarefaController.tarefa.prazo_execucao}"/> 

       <h:outputLabel for="detalhes" value="Detalhes:" /> 
       <h:inputText id="detalhes" value="#{tarefaController.tarefa.detalhes}"/> 

       <h:outputLabel for="responsavel" value="Responsavel:" /> 
       <h:inputText id="responsavel" value="#{tarefaController.tarefa.responsavel}"/> 

       <h:outputLabel for="urgente" value="Urgente:" /> 

       <h:selectOneMenu id="urgente" value="#{tarefaController.tarefa.urgente}"> 
        <f:selectItem itemLabel="nao" itemValue="0"/> 
        <f:selectItem itemLabel="sim" itemValue="1"/> 
       </h:selectOneMenu> 

       <h:outputLabel for="status" value="Status:" /> 
       <h:inputText id="status" value="#{tarefaController.tarefa.status}"/> 

       <h:outputLabel for="data_conclusao" value="Data de conclusao:" /> 
       <h:inputText id="data_conclusao" value="#{tarefaController.tarefa.data_conclusao}"/> 

       <h:outputLabel for="descricao_conclusao" value="Descricao da conclusao:" /> 
       <h:inputText id="descricao_conclusao" value="#{tarefaController.tarefa.descricao_conclusao}"/> 

       <p:commandButton update="tabela" oncomplete="dialogGerTarefa.hide();" actionListener="#{tarefaController.adicionarTarefa}" value="Inserir Tarefa"/> 
       <p:commandButton update="tabela" oncomplete="dialogGerTarefa.hide();" actionListener="#{tarefaController.alterarTarefa}" value="Alterar Tarefa"/> 

      </h:panelGrid> 
     </h:form> 
    </p:dialog> 

</h:body> 

tarefaController.java

package br.com.listadetarefas.controller; 

import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.event.ActionEvent; 
import javax.faces.model.DataModel; 
import javax.faces.model.ListDataModel; 

import br.com.listadetarefas.jpa.TarefaDao; 
import br.com.listadetarefas.model.Tarefa; 

@ManagedBean 
@SessionScoped 
public class TarefaController { 

    private Tarefa tarefa; 
    private DataModel listaTarefas; 

    public DataModel getListarTarefas() { 
     List<Tarefa> lista = TarefaDao.listaTarefasComFiltro("Todas"); 
     listaTarefas = new ListDataModel(lista); 
     return listaTarefas; 
    } 

    public Tarefa getTarefa() { 
     return tarefa; 
    } 

    public void setTarefa(Tarefa tarefa) { 
     this.tarefa = tarefa; 
    } 

    public void prepararAdicionarTarefa(ActionEvent actionEvent) { 
     tarefa = new Tarefa(); 
    } 

    public void prepararAlterarTarefa(ActionEvent actionEvent) { 
     tarefa = (Tarefa) (listaTarefas.getRowData()); 
    } 

    public String excluirTarefa() { 

     Tarefa tarefaTemp = (Tarefa) (listaTarefas.getRowData()); 
     TarefaDao.remove(tarefaTemp.getId()); 
     return "index"; 

    } 

    public void adicionarTarefa(ActionEvent actionEvent) { 

     TarefaDao.adiciona(tarefa); 

    } 

    public void alterarTarefa(ActionEvent actionEvent) { 

     TarefaDao.resolve(tarefa); 

    } 

} 

tarefa.java

package br.com.listadetarefas.model; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 

@Entity 
public class Tarefa { 

    @Id 
    @GeneratedValue 
    private int id; 

    private String titulo; 
    private String prazo_execucao; 
    private String detalhes; 
    private String responsavel; 
    private boolean urgente; 
    private String status; 
    private String data_conclusao; 
    private String descricao_conclusao; 

    public Tarefa() { 
     this.status = "aberta"; 
    } 

    public String getTitulo() { 
     return titulo; 
    } 
    public void setTitulo(String titulo) { 
     this.titulo = titulo; 
    } 
    public String getPrazo_execucao() { 
     return prazo_execucao; 
    } 
    public void setPrazo_execucao(String prazo_execucao) { 
     this.prazo_execucao = prazo_execucao; 
    } 
    public String getDetalhes() { 
     return detalhes; 
    } 
    public void setDetalhes(String detalhes) { 
     this.detalhes = detalhes; 
    } 
    public String getResponsavel() { 
     return responsavel; 
    } 
    public void setResponsavel(String responsavel) { 
     this.responsavel = responsavel; 
    } 
    public boolean isUrgente() { 
     return urgente; 
    } 
    public void setUrgente(boolean urgente) { 
     this.urgente = urgente; 
    } 
    public String getStatus() { 
     return status; 
    } 
    public void setStatus(String status) { 
     this.status = status; 
    } 
    public String getData_conclusao() { 
     return data_conclusao; 
    } 
    public void setData_conclusao(String data_conclusao) { 
     this.data_conclusao = data_conclusao; 
    } 
    public String getDescricao_conclusao() { 
     return descricao_conclusao; 
    } 
    public void setDescricao_conclusao(String descricao_conclusao) { 
     this.descricao_conclusao = descricao_conclusao; 
    } 
    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
} 

答えて

1

主な問題はあるように私は私に見えます10をcommandButtonに追加します。それを取り除く。フルリクエストを行うときには、oncomplete -callbackはありません(ajaxの場合のみ)。

また、dialogGerTarefa.show()PF('dialogGerTarefa').show()(およびhide()と同様)に置き換えてください。最初の構文は古い構文です。

また、どこでもprependId="false"を削除します。 More reading。ダイアログ内のフォームに固定IDを指定し、update=":dialogformid:infosTarefa"などで更新する必要があります(update=":dialogformid"も同様です)。

+0

これは機能しました。 = Dただ、prependId = "false"が実際にコードを破ったと思います。それが完璧に機能していなければ、ありがとう! – Lajotas

+0

もう1つ質問すれば、実際には最初のレイアウトユニットを「左」の位置に表示しようとしていましたが、レンダリングできません。 layoutUnit position = "left"に変更する以外に何か間違っていますか? – Lajotas

+1

素晴らしい:-) primefacesコンポーネントは、selectOneMenu、commandLinkなど、これをインクルードして使用することもできます。彼らはほんの一握りで、より多くの選択肢があります。サーバーがサポートしている場合は、CDI Beanに変更することもできます。しかし、thatsちょうど選択肢 –

関連する問題