我可以啓用/禁用不使用現有Wicket類的(AJAX)往返 服務器的域(AJAX)嗎?即是否可以將 行爲添加到導致呈現的HTML包含的字段中 啓用/禁用字段的JavaScript?
是的,你可以沒有服務器往返。如果不是Wicket提供的課程,你將不得不自己創建。以下是您可以添加到組件的行爲。
public class DisableFormComponentBehavior extends Behavior {
private Component sourceComponent;
private FormComponent targetComponent;
public DisableFormComponentBehavior(FormComponent targetComponent) {
targetComponent.setOutputMarkupId(true);
this.targetComponent = targetComponent;
}
public void bind(Component component) {
super.bind(component);
component.setOutputMarkupId(true);
this.sourceComponent = component;
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(JavaScriptHeaderItem
.forReference(JQueryResourceReference.get()));
response.render(OnDomReadyHeaderItem.forScript(String
.format("$('#%s').click(function(){$('#%s').prop('disabled', true);});",
component.getMarkupId(), targetComponent.getMarkupId())));
}
}
如果回答上述問題是沒有:如果點擊這個行爲的組成部分,在構造函數中傳遞的目標組件將通過javascript禁用它是否「合法」對我來說,加 自己在標記中需要使用JavaScript代碼嗎?或者我運行 搞亂表單提交的風險,以致Wicket不能正確識別 ?
那麼,上述問題的答案不是「否」,但它仍然是完全合法的將自己的JavaScript添加到Wicket html文件。但是,您必須在HTML中定義組件的ID。不過,我更喜歡行爲解決方案,因爲它更具可重用性。
來源
2013-07-11 20:38:37
Tom
美麗。謝謝! – aioobe