2012-02-24 7 views
5

Tapestry5'te, formda iki gönderme düğmesi var ve ben de Doğrulama olayını gerçekleştirmek istiyorum, bunu nasıl başarabilirim? Eğer böyle enTapestry5: form doğrulama olayıyla birden çok gönderme düğmesi işleme

Görüldüğü gibi
@OnEvent(value = EventConstants.VALIDATE_FORM, component = "verifyCreateExampleModelForm") 
private Object validation() { 
    if (StringUtils.isEmpty(modelTypeName)) { 
     verifyCreateExampleModelForm.recordError("incorrectmodelTypename")); 
     this.isAllowed = false; 
    } 
} 

@OnEvent(component = "saveAsAwaitingCompletion", value = "selected") 
private void onSaveAsAwaitingCompletion() { 
} 

@OnEvent(component = "saveAsCreated", value = "selected") 
private void onSaveAsCreated() { 
} 

cevap

4

, selected olay doğrulama önce olur page.class olarak

<form t:type="form" t:id="verifyCreateExampleModelForm"> 

    <input class="btsubmit" t:type="submit" t:id="saveAsAwaitingCompletion" > 
    <input class="btsubmit" t:type="submit" t:id="saveAsCreated"> 
</form> 

page.tml ediyor: Bu ben yapmaya çalışıyorum budur Gönderme düğmeleri için eylem işleyici kodunuzu etkinlik işleyicilerine koymayın. Ancak, bu yöntemlerde bir durumu depolayabilir ve gerçek eylemi form olayı işleyicisinde gerçekleştirebilirsiniz:

@OnEvent(component = "saveAsAwaitingCompletion", value = EventConstants.SELECTED) 
void saveAsAwaitingCompletionClicked() { 
    this.action = AWAITING_COMPLETION; 
} 

@OnEvent(component = "saveAsCreated", value = EventConstants.SELECTED) 
void saveAsCreatedClicked() { 
    this.action = CREATED; 
} 

... //validation logic etc. 

@OnEvent(component="verifyCreateExampleModelForm" value = EventConstants.SUCCESS) 
void save() { 
    if (this.action == AWAITING_COMPLETION) { 
     ... 
    } else { 
     ... 
    } 
}