В Wicket, когда я отключаю экземпляр Form
, он полностью отключает мои поля ввода, но также не может отключить кнопку отправки.
Как отключить кнопку отправки, тоже желательно без необходимости добавлять wicket:id
для кнопки отправки?
В Wicket, когда я отключаю экземпляр Form
, он полностью отключает мои поля ввода, но также не может отключить кнопку отправки.
Как отключить кнопку отправки, тоже желательно без необходимости добавлять wicket:id
для кнопки отправки?
Используйте AjaxSubmitLink
и добавьте его в форму. Он будет включен/выключен вместе с формой:
HTML:
<button wicket:id="submit">Submit</button>
Джава:
form.add(new AjaxSubmitLink("submit"));
Я решил эту проблему, автоматически создав Buttons
. В моем WebApplication
методе init()
я устанавливаю AbstractMarkupFilter
, который делает <input type="submit"/>
автоматических ссылок:
markupSettings.setMarkupParserFactory(new IMarkupParserFactory() {
public MarkupParser newMarkupParser(MarkupResourceStream resource) {
final MarkupParser parser = new MarkupParser(new XmlPullParser(), resource);
parser.appendMarkupFilter(new AbstractMarkupFilter() {
public MarkupElement nextTag() throws ParseException {
final ComponentTag tag = (ComponentTag)getParent().nextTag();
if (tag == null) {
return null;
}
if (tag.getId() != null) {
return tag;
}
if (!tag.isOpen() && !tag.isOpenClose()) {
return tag;
}
if (tag.getName().equals("input") && !(tag instanceof WicketTag)) {
final String type = tag.getAttributes().getString("type");
if ("submit".equals(type)) {
tag.enableAutolink(true);
tag.setId(WicketLinkTagHandler.AUTOLINK_ID);
tag.setAutoComponentTag(true);
tag.setModified(true);
}
}
return tag;
}
};
return parser;
}
});
Затем я устанавливаю IComponentResolver
перед существующим AutoLinkResolver
:
final List<IComponentResolver> componentResolvers = getPageSettings().getComponentResolvers();
for (int i ; i < componentResolvers.size(); i++) {
final IComponentResolver resolver = componentResolvers.get(i);
if (resolver instanceof AutoLinkResolver) {
componentResolvers.add(i, new IComponentResolver() {
@Override
public boolean resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag) {
if (tag.isAutolinkEnabled()) {
if (tag.getName().equals("input")) {
final String type = tag.getAttribute("type");
if ("submit".equals(type)) {
final Page page = container.getPage();
final String autoId = WicketLinkTagHandler.AUTOLINK_ID + Integer.toString(page.getAutoIndex());
if (tag.getId() == null) {
tag.setId(autoId);
tag.setAutoComponentTag(true);
}
container.autoAdd(new Button(autoId));
return true;
}
}
}
return false;
}
});
break;
}
}
wicket:id
? - person idontevenseethecode   schedule 27.05.2014wicket:id
калиткаComponent
никогда не может быть создана для кнопки отправки, она остается простым HTML. - person idontevenseethecode   schedule 28.05.2014