【发布时间】:2015-03-05 20:27:29
【问题描述】:
使用 Primefaces datatables with radio button selection 的简单应用程序无法正常运行。
当我选择一个带有单选按钮的元素时,event 参数在delete() 方法中为null,因此无法从数据表中删除所选行。
view.xhtml // 这是我遇到问题的地方
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Event List</title>
</h:head>
<h:body>
<h:form>
<p:dataTable id="eventlist" var="event" value="#{eventBean.eventlist}" selection="#{eventBean.selectedEvent}" rowKey="#{event.id}" scrollable="true" scrollHeight="200" style="width:500px;">
<f:facet name="header">
Event List
</f:facet>
<p:column selectionMode="single" style="width:16px;text-align:center"/>
<p:column headerText="ID">
<h:outputText value="#{event.id}">
</h:outputText>
</p:column>
<p:column headerText="Date">
<h:outputText value="#{event.date}">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:outputText>
</p:column>
<f:facet name="footer">
<p:commandButton process="eventlist" action="#{eventBean.delete(eventBean.event)}" value="#{eventBean.event}" ajax="true" >
</p:commandButton>
</f:facet>
</p:dataTable>
</h:form>
</h:body>
EventBean.java // 这是我的托管 bean
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.ManagedBean;
import javax.ejb.EJB;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
@ManagedBean
@Named(value = "eventBean")
@RequestScoped
public class EventBean {
@EJB
private EventManager em;
private Event event;
private Event selectedEvent = new Event();
private Date currentDate;
private List<Event> eventlist = new ArrayList<Event>();
public Date getCurrentDate() {
if (currentDate == null) {
currentDate = new Date();
}
return currentDate;
}
public EventBean() {
}
public Event getEvent() {
if (event == null) {
event = new Event();
}
return event;
}
public void setEvent(Event event) {
this.event = event;
}
public List<Event> getEventlist() {
return eventlist;
}
public void setEventlist(List<Event> eventlist) {
this.eventlist = eventlist;
}
public Event getSelectedEvent() {
return selectedEvent;
}
public void setSelectedEvent(Event selectedEvent) {
this.selectedEvent = selectedEvent;
}
public String create() {
em.save(event);
eventlist = em.findEvents();
return "view";
}
public String delete(Event event){ //the event object is null
em.deleteEvent(event);
return "index";
}
}
简而言之,我想要实现的是:从数据表中正确选择行,然后从数据表和数据库中删除它。
【问题讨论】:
标签: jsf jsf-2 primefaces datatable