2016-09-27 2 views
0

こんにちは私は私のプロジェクトで満たす難しい問題を解決するためにあなたの助けを求めたいと思います。 私はprimefaces Scheduleを使用しています。タスクを実行するために、すべてのイベントをagendaという名前のMySQLテーブルに格納します。 テーブルの更新が気になりません。私が最初に更新するとき、すべてのものは完全に動作しますが、mySQLがテーブル内の関連するラインを更新するための主キーを見つけられないので、他の試みは失敗します。 これは私の見解コードがテーブル更新とPrimefaces ScheduleEvent

<h:panelGrid columnClasses="value"> 
    <p:schedule id="schedule" value="#{agendaBean.eventModel}" widgetVar="myschedule" timeZone="GMT" process="@form" axisFormat="HH:mm" > 
     <p:ajax event="dateSelect" listener="#{agendaBean.onDateSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" /> 
     <p:ajax event="eventSelect" listener="#{agendaBean.onEventSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" /> 
    </p:schedule> 
</h:panelGrid> 
<p:dialog widgetVar="eventDialog" header="Event" showEffect="clip" hideEffect="clip" height="400" width="400" id="eventDetails" resizable="false" > 
    <h:outputLabel for="idCleAg">REF <span class="requis">*</span></h:outputLabel> 
    <h:inputText id="idCleAg" value="#{agendaBean.agenda.pkIdag}"/> 
    <br/> 
    <h:outputLabel for="title">title <span class="requis">*</span></h:outputLabel> 
    <p:inputText id="title" value="#{agendaBean.event.title}" required="true" maxlength="60" style="background:#fff;width:370px;margin-left:-4px;"/> 
    <h:message id="titleMessage" for="title" errorClass="erreur" /> 
    <br/> 
    <h:outputLabel for="place">Place<span class="requis">*</span></h:outputLabel> 
    <p:inputText id="place" value="#{agendaBean.agenda.place}" required="true" maxlength="60" style="background:#fff;width:370px;margin-left:-4px;"/> 
    <h:message id="placeMessage" for="place" errorClass="erreur" /> 
    <br/> 
    <h:outputLabel for="description">Description<span class="requis">*</span></h:outputLabel> 
    <p:inputTextarea id="description" value="#{agendaBean.agenda.description}" rows="10" cols="50" queryDelay="750" minQueryLength="4" required="true"/> 
    <h:message id="descriptionMessage" for="description" errorClass="erreur" /> 
    <br/> 
    <p:outputLabel for="from" value="From:" /> 
    <p:calendar id="from" value="#{agendaBean.event.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/> 
    <br/> 
    <p:outputLabel for="to" value="To:" /> 
    <p:calendar id="to" value="#{agendaBean.event.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/> 
    <br/> 
    <p:commandButton id="addButton" value="Save" actionListener="#{agendaBean.addEvent}" update="@form" ajax="true" /> 
</p:dialog> 

を下回っているすべてのヘルプは歓迎されるであろう私のバッキングBeanコード

public class AgendaBean implements Serializable{ 
private Agenda agenda; 
private String title; 
private Date dateDbt; 
private Date dateFin; 
private ScheduleModel eventModel; 
private ScheduleEvent event; 
@EJB 
private AgendaDao agendaDao; 
public AgendaBean(){ 
    agenda=new Agenda(); 
    event= new DefaultScheduleEvent(nom, dateDbt, dateFin, agenda) ; 
} 
@PostConstruct 
public void init() { 
    eventModel=new DefaultScheduleModel(); 
    agendas=agendaDao.listAgenda(); 
    for(Agenda agendItem:agendas){ 
     String title=agendItem.getTitle(); 
     Date dtDbt=new java.util.Date(agendItem.getDateDbt().getTime()); 
     Date dtFin=new java.util.Date(agendItem.getDateFin().getTime()); 
     event=(ScheduleEvent) new DefaultScheduleEvent(title, dtDbt, dtFin,agendItem); 
     eventModel.addEvent(event); 
    } 
} 
public void addEvent(ActionEvent actionEvent){ 
    if(event.getId() == null) 
    { 
     agenda.setDateDbt(new java.sql.Timestamp(event.getStartDate().getTime())); 
     agenda.setDateFin(new java.sql.Timestamp(event.getEndDate().getTime())); 
     agenda.setTitle(event.getTitle()); 
     agendaDao.creer(agenda); 
    } 
    else{ 
     eventModel.updateEvent(event); 
     agenda.setDateDbt(new java.sql.Timestamp(event.getStartDate().getTime())); 
     agenda.setDateFin(new java.sql.Timestamp(event.getEndDate().getTime())); 
     agenda.setTitle(event.getTitle()); 
     agendaDao.modifier(agenda); 
    } 
    init(); 
} 

public void onEventSelect(SelectEvent selectEvent) { 
    event = (ScheduleEvent) selectEvent.getObject(); 
    Agenda agendaFound=(Agenda)event.getData(); 
    agenda.setDescription(agendaFound.getDescription()); 
    agenda.setLieu(agendaFound.getLieu()); 
    agenda.setPkIdag(agendaFound.getPkIdag()); 
} 

public void onDateSelect(SelectEvent selectEvent) { 
    event = (ScheduleEvent) new DefaultScheduleEvent("", (Date) selectEvent.getObject(), (Date) selectEvent.getObject(),new Agenda()); 
} 

}

です!

+0

以下のように私は@EJB注釈の詳細を知らないが、event' 'の初期化はすべきではないonEventSelect方法でこのラインを書くために十分で私を発見しましたコンストラクタ内ではなく@PostConstructメソッドの内部で行われますか? – ChristophS

答えて

0

ありがとう

public void onDateSelect(SelectEvent selectEvent) { 
    agenda=new Agenda(); 
    event = (ScheduleEvent) new DefaultScheduleEvent("", (Date) selectEvent.getObject(), (Date) selectEvent.getObject(),agenda); 
} 
を使用してみてください
+0

これは上記の問題に対する解決策です/説明を追加してください – Kukeltje

0

このproblem.Itに対する解決策が

public void onEventSelect(SelectEvent selectEvent) { 
    event = (ScheduleEvent) selectEvent.getObject(); 
    agenda=(Agenda)event.getData(); 
}