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要求のパラメータの不正な値によって引き起こされる可能性がありますか?
ありがとうございました。