2011-12-05 14 views
2

PrimeFacesの使用を開始したばかりで、自分のコードに何が問題なのかわかりません。これは、Bean名を除いて、ショーケースのサンプルとまったく同じです。私は成功のためにこのサイトを見て答えを探しました。primefacesには 'handleDateSelect'というプロパティがありません

PrimeFaces:

<p:calendar value="#{securityForecastReturnBean.date}" 
        mode="inline" onSelectUpdate="inputsGrowl" 
        selectListener="#{securityForecastReturnBean.handleDateSelect}" 
        required="true" /> 

Java Beanが:

@Component 
@Scope("request") 
@ManagedBean 
public class SecurityForecastReturnBean { 
public void handleDateSelect(DateSelectEvent event) { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
     FacesContext facesContext = FacesContext.getCurrentInstance(); 
     facesContext.addMessage(null, 
       new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", 
         format.format(event.getDate()))); 
    } 

}

それは本当に簡単ですまだ私のBeanが、このプロパティを持っていないことを言っています?私はPrimeFaces 2.2.1を使用しています

javax.servlet.ServletException: /security_page.xhtml: The class 'com.ls.forecast.webui.beans.SecurityForecastReturnBean' does not have the property 'handleDateSelect'. 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325) 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:546) 
com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:363) 
com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154) 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:313) 

はここで正確なエラーメッセージです。

ご協力いただければ幸いです!

答えて

3

私は自分の問題を理解しました。間違った名前空間を使用することと関係していました。私は古いものの代わりにhttp://primefaces.org/uiを使用しなければならなかった。

0

それはドキュメントのエラーの可能性がありますようにこれが見えます:Primefacesガイド2.2から

アヤックス選択 カレンダーは、日付がサーバ側に選択されるたびに意味インスタントAJAXの選択をサポートしています selectListenerは、 パラメータとしてorg.primefaces.event.DateSelectEventインスタンスを使用して呼び出すことができます。オプションのonSelectUpdateオプションを使用すると、ページ上の他のコンポーネントを更新できます。

<p:calendar value="#{calendarBean.date}" onSelectUpdate="messages" 
     selectListener="#{calendarBean.handleDateSelect}" /> 
     <p:messages id="messages" /> 

    public void handleDateSelect(DateSelectEvent event) { 
     Date date = event.getDate(); 
     //Add facesmessage 
    } 

プログラムによるマネージドBeanのプロパティを期待しているようです。これに変更して差異があるかどうかを調べることができます#{calendarBean.handleDateSelect()}。マークアップの別の場所でhandleDateSelectを参照していないことを確かめていますか?

+0

ありがとうございます。 'securityForecastReturnBean.handleDateSelect()'のような括弧を追加してみました。これは同じエラーメッセージです。私は、それが呼び出される唯一の場所なので、他のマークアップでhandleDateSelectメソッドを参照していないことも確信しています。 – user899757

0

PrimeFacesショーケースで与えられたソースコードの例が間違っています。メソッドはorg.primefaces.event.SelectEventを取るべきではなく、org.primefaces.event.DateSelectEventを取るべきです。ソースコードのサンプルをすぐに変更すると、次のようになります。

public void handleDateSelect(DateSelectEvent event) { 
    FacesContext facesContext = FacesContext.getCurrentInstance(); 
    SimpleDateFormat format = new SimpleDateFormat("d/M/yyyy"); 
    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format(event.getDate()))); 
} 
関連する問題