2

処理されたイベント (選択ボックスの onValueChanged) でコンポーネントのゾーンを更新しようとすると、この問題が発生します。

[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception: Failure writing parameter 'value' of component calendar/Stereotype:daycomponent.selectcategoryactivity: Property 'day' (within property expression 'day.category', of com.hb.craproject.web.components.calendar.stereotype.AddDayStereotypeComponent@3a6b9a8a) is null.
org.apache.tapestry5.ioc.internal.OperationException: Failure writing parameter 'value' of component calendar/Stereotype:daycomponent.selectcategoryactivity: Property 'day' (within property expression 'day.category', of com.hb.craproject.web.components.calendar.stereotype.AddDayStereotypeComponent@3a6b9a8a) is null. [at classpath:com/hb/craproject/web/components/calendar/stereotype/AddDayStereotypeComponent.tml, line 24]

「日」は、次のように定義されたパラメーターです。

@Parameter(required=true)
@Property
private DayStereotypeBean day

コンポーネントが初めてレンダリングされるときは、すべて正常に動作します。選択した値を変更しようとすると、クラッシュしてそのエラーメッセージが表示されます。

私の DayComponents は、私の tml ページで次のように宣言されています。

<t:loop source="week" value="dayBean">
  <tr style="border :0.1em solid blue; border-radius : 0.5em">
    <t:day t:id="dayComponent" day="dayBean" /></tr></t:loop>

これは Day Bean のリストです。このリストは、ページの setuprender イベント ハンドラーでフィードされます。

select コンポーネントのイベント ハンドラーで Day パラメーターが参照を失った理由がわかりません。

public Object onValueChangedFromSelectDuree(String duree)
{    
//throwing exception, day.Day is a String, this line is just for showing you that the object doesn't exist anymore in the method, if this line is not here, the exception is throwed too because my select tml component use (like many oher components) that object
    day.getDay(); 
    return request.isXHR() ? zoneDuree.getBody() : null;
}

これで、select tml コンポーネントが表示されます。

<t:zone t:id="zoneDuree">
        <t:select t:id="selectDuree"
            model="literal:journée,demi-journée,définir" value="day.duree"  zone="zoneDuree" /> <!-- here some fields depending of the select value --></t:zone>

どんなアイデアも高く評価されるべきです。

(下手な英語でごめんなさい;))

4

1 に答える 1