2012-02-24 2 views
5

Tapestry5에서 양식에 두 개의 제출 단추가 있으며 유효성 검사 이벤트도 수행하고 싶습니다. 어떻게 수행 할 수 있습니까? 당신이 할 수 있도록,Tapestry5 : 양식 유효성 검사 이벤트로 여러 제출 단추 처리

당신이 관찰 한 것처럼
@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() { 
} 

답변

4

selected 이벤트가 검증되기 전에 발생 page.class에서

<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에서 : 이것은 내가 할 노력하고 무엇인가 액션 버튼을 제출 버튼에 대한 이벤트 핸들러에 넣지 마십시오. 그러나 이러한 메소드에 상태를 저장하고 이벤트 핸들러 양식에서 실제 작업을 수행 할 수 있습니다.

@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 { 
     ... 
    } 
}