2012-02-24 37 views
5

Trong Tapestry5, tôi có hai nút gửi trong biểu mẫu và tôi cũng muốn thực hiện Xác thực sự kiện, làm cách nào tôi có thể đạt được điều đó? Đây là những gì tôi đang cố gắng để làm:Tapestry5: xử lý nhiều nút gửi cùng với sự kiện xác thực biểu mẫu

Trong page.tml

<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> 

Trong page.class

@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() { 
} 

Trả lời

4

Như các bạn đã quan sát, sự kiện selected xảy ra trước khi xác nhận, vì vậy bạn có thể không đưa mã xử lý hành động của bạn vào trình xử lý sự kiện cho các nút gửi. Tuy nhiên, bạn có thể lưu trữ trạng thái trong các phương thức đó và thực hiện hành động thực tế trong trình xử lý sự kiện biểu mẫu:

@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 { 
     ... 
    } 
} 
Các vấn đề liên quan