2014-12-09 2 views
1

Я довольно новичок в Tapestry, и я пытаюсь обновить зону при выборе значения из выбранного компонента. Это где я пытаюсь сделать это:Невозможно найти зону ajax для динамического обновления

<t:Zone t:id="ispTypeZone" id="ispTypeZone"> 
          <t:Select t:id="ispType" 
           t:blankLabel="[${message:select-label}]" t:zone="ispTypeZone" 
           t:value="ispType" event="valueChangedFromIspType" 
           disabled="${editable}" style="width:515px;" 
           t:blankOption="ALWAYS" t:validate="required" 
           /> 
           </t:Zone> 

    <t:Zone t:id="selectionZone" id="selectionZone"> 
          <t:If t:test="${somethingSelected}"> 

           <t:If test="${ispSelected}"> 
            <t:Zone t:id="ovZone" id="ovZone"> 
             <t:Select t:id="ovType" t:value="ovType" 
              t:blankLabel="[${message:select-label}]" t:zone="ovZone" 
              t:validate="required" event="valueChangedFromOvType" 
              style="width:515px;" /> 
            </t:Zone> 
            <p:else> 
             <t:Zone t:id="vpZone" id="vpZone"> 
              <t:Select t:id="vpType" t:value="vpType" 
               t:blankLabel="[${message:select-label}]" t:zone="vpZone" 
               t:validate="required" event="valueChangedFromVpType" 
               t:blankOption="ALWAYS" disabled="${editable}" 
               style="width:515px;" /> 
             </t:Zone> 
            </p:else> 
           </t:If> 
           <p:else> 
           </p:else> 

          </t:If> 
         </t:Zone> 

Это где я называю рендер:

void onValueChangedFromIspType(String ispType) { 
    //some code here 
    if (request.isXHR()) { 
     ajaxResponseRenderer.addRender(selectionZone); 
    } 
    } 

Независимо значение, выбранное из выбранного компонента, он вызывает рендер для selectionZone, но Я продолжаю получать сообщение об ошибке «Невозможно найти зону Ajax ZoneZone» для динамического обновления ». Несмотря на сообщение об ошибке, «somethingSelected» все еще выполняется, но следующие компоненты выбора не отображаются. Кажется, я не могу найти проблему, поэтому, если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен.

Спасибо.

ответ

0

Если ispType выбрать изменение необходимо обновить что-то в selectionZone, то т: зона должна selectionZone и не ispTypeZone.

В своем классе, объявить зону:

@InjectComponent 
private Zone selectionZone; 

В вашем методе onValueChange простое возвращение должно быть достаточно:

void onValueChangedFromIspType(String ispType) { 
//some code here 
if (request.isXHR()) { 
    return this.selectionZone; 
} 
} 
Смежные вопросы