JSF - p:ajax监听器询问参数netBeans / primefaces

时间:2013-05-09 19:43:37

标签: jsf netbeans primefaces

版本: NetBeans:7.2.1 PrimeFaces:3.5.3 GlassFish:3.1.2 JDK 1.6

我一直在努力寻找相关问题并找到了很接近的主题,但并不是我正在寻找的主题。我正在尝试做一些类似于PrimeFaces ShowCase的p:schedule demo,我想要一个对话框,显示点击事件的详细信息。

我认为问题来自于从支持bean调用listener方法。当我在p:ajax标签中输入listener方法时,NetBeans强制我传入一个参数,如:

listener="#{cmodel.onEventSelect(e)}"

我认为没有必要,因为我没有任何价值可以传递。

我在想:

  1. NetBeans无法将该方法识别为侦听器。 (因为我不断看到人们在不需要传递参数的情况下调用方法的多个示例。)
    1. 我没有在模型中正确地将该方法注册为侦听器。
    2. 另外,我已经直接将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>  
      

      支持Bean:

      @ManagedBean(name = "cmodel")
      

      @SessionScoped 公共类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() +
                          "\n\n\n" + 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();       
      }  
      

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题 - 那就是NetBeans。我升级到7.3并且不再有问题了。尽管另一个问题出现在itellisense无法识别来自辅助bean的散列图,但这是另一个问题。