你好,我想問你的幫助,以解決我遇到的困難,我在我的項目。 我正在使用primefaces Schedule來執行任務,爲此我將所有事件存儲在名爲agenda的MySQL表中。 我很擔心表更新。當我第一次更新時,所有的東西都可以正常工作,但其他嘗試失敗,因爲mySQL沒有找到更新表中有關行的主鍵。 這是我支持bean代碼表更新和Primefaces ScheduleEvent
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());
}
}
我的看法代碼如下
<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>
任何幫助將受到歡迎!謝謝
我不知道@EJB批註細節的方法這一行,但是不應該的'初始化event'是在@PostConstruct方法內完成,而不是在構造函數內? – ChristophS