版本:NetBeans:7.2.1底漆面:3.5.3玻璃鱼:3.1.2JDK 1.6
我一直在努力寻找相关的问题,并找到了相近的主题,但并不完全是我想要的。我正在尝试做一些类似于PrimeFacesShowCase中的p:schedule演示的事情,在那里我希望出现一个对话框,显示单击的事件的详细信息。
我认为问题来自于从backingbean调用listener方法。当我在p:ajax标记中键入监听器方法时,NetBeans会强制我传入一个参数,比如:
listener="#{cmodel.onEventSelect(e)}"
我认为这没有必要,因为我无论如何都没有价值。
我在想:
- NetBeans出现问题,无法将该方法识别为侦听器。(因为我经常看到很多人在不需要传递参数的情况下调用该方法的例子。(
或
- 我没有在Model中正确地将该方法注册为侦听器
此外,我直接将ShowCase中的演示复制并粘贴到一个项目中,但它没有起作用,这让我更倾向于NetBeans的问题。(也就是说,对话框出现,但没有所选事件的信息(
综上所述;事件在日程安排中显示得很好,我只是无法打开对话框来显示所选事件的事件详细信息。
如有任何帮助,我们将不胜感激!
查看层:
<h:form>
<p:schedule id="nelsonsSchedule" value="#{cmodel.scheduleModel}" showHeader="true"
leftHeaderTemplate="none" rightHeaderTemplate="prev, next today"
draggable="false" timeZone="UTC" styleClass="schedule">
<p:ajax event="eventSelect" listener="#{cmodel.onEventSelect}"
update="eventDialog eventDetails" oncomplete="eventDialog.show()"/>
</p:schedule>
<p:dialog id="eventDialog" widgetVar="eventDialog" header="EventDetails">
<p:panel id="eventDetails">
<h:outputLabel value="#{cmodel.selectedEvent.title}" />
</p:panel>
</p:dialog>
</h:form>
背衬豆:
@ManagedBean(name = "cmodel")
@会话范围公共类CalendarModel实现Serializable{
private ScheduleModel scheduleModel;
private List<ScheduleEvent> allScheduledGames;
private DefaultScheduleEvent gameEvent;
public ScheduleEvent selectedEvent;
List<Game> allGames;
@PersistenceContext
private EntityManager em;
public CalendarModel() {
}
@PostConstruct
public void init() {
allScheduledGames = new ArrayList<ScheduleEvent>();
allGames = new ArrayList<Game>();
allGames = em.createNamedQuery("Game.findAll").getResultList();
/*create list of games to put into the ScheduleModel*/
for (int i = 0; i < allGames.size(); i++) {
gameEvent = new DefaultScheduleEvent(allGames.get(i).getOpponent() +
"nnn" + allGames.get(i).getTimeOfGame(),
allGames.get(i).getDateOfGame(),
allGames.get(i).getDateOfGame());
if(allGames.get(i).getHomeAway().equals("away")){
gameEvent.setStyleClass("away");
} else{
gameEvent.setStyleClass("home");
}
gameEvent.setData(allGames.get(i));
allScheduledGames.add(gameEvent);
}/*end for*/
scheduleModel = new DefaultScheduleModel(allScheduledGames);
}/*end init()*/
public void onEventSelect (SelectEvent e) {
selectedEvent = new DefaultScheduleEvent();
selectedEvent = (ScheduleEvent) e.getObject();
}
如果有人遇到同样的问题,那就是NetBeans。我升级到7.3,不再有问题了。虽然出现了另一个itellisense无法识别来自支持bean的哈希图的问题,但这是另一个问题。