2016-05-23 11 views
1

Tapestryコンポーネントのtmlファイルにフォームがあります。Tapestryで呼び出されない送信イベントの準備

... 
<t:form t:id="searchForm" clientValidation="none"> 
    .... 
    <t:select t:id="globalSport" model="globalSportModel" value="formData.globalSportId" blankOption="never"/> 
    .... 
</t:form> 
.. 

そして、ここでJavaファイルを対応の重要な部分である:

... 
@Property(read = true, write = false) 
private ServiceSearchFormData formData; 
... 
@OnEvent(value = EventConstants.PREPARE_FOR_SUBMIT, component = "searchForm") 
void prepareForSubmit() 
{ 
    formData = new ServiceSearchFormData(); 
} 
... 

それは非常に簡単であるように思われます。 ServiceSearchFormDataは、属性とゲッター/セッターメソッドがほとんどないDTOです。これは、フォームに送信されたデータをカプセル化します。インスタンスは「準備完了」イベントで作成されます。 ...それはうまく動作します。

ただし、プロダクション環境で例外がスローされることがあります。私はそれを再現することができません。このフォームにデータを送信するPOSTリクエストの範囲内で発生します。例外メッセージには、

コンポーネントMyPortalのパラメータ 'value'の書き込みに失敗しました:portalindex.portalsearchform.globalsport:プロパティ 'formData'(プロパティ式 'formData.globalSportId'内、cz.ftm.fitsoftware.webapp.componentsの)。 PortalSearchForm @ 3262579e)がnullです。

どうすれば可能ですか?プロパティformDataはどのように初期化されませんか?この珍しい(しかし規則的な)例外は、t:formdataというPOST要求のパラメータの不正な値によって引き起こされる可能性がありますか?

ありがとうございました。

答えて

1

このくらい私が見ることができるに基づいて、私は絞り込む問題に二つのことをしようとするだろう:

  1. 私は

    @OnEvent(value = EventConstants.PREPARE_FOR_SUBMIT) 
    void prepareForSubmit() 
    { 
        formData = new ServiceSearchFormData(); 
    } 
    
  2. component = "searchForm"修飾子を削除するだろう、私はすべてを削除します他の@OnEventアノテーションを使用して、このイベントを嚥下するかどうかを確認します。

    //@OnEvent(...) 
    void foo() {...} 
    
関連する問題