如何从 Wicket 反馈面板方法(例如 info()
和 error()
)调用 JavaScript 方法。
我想做的是,显示 MDL的snackbar对于 Wicket FeddbackPanel
的 error()
/info()
方法。但要显示 snackbar ,我们必须调用 JavaScript 方法。我不知道该怎么做,尤其是在非 ajax 调用中。
最佳答案
您可以子类化 FeedbackPanel 并调用 renderHead(IHeaderResponse response)
中的 javascript
像这样:
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(OnDomReadyHeaderItem.forScript("callFancyJs();"));
}
无论是否使用 AJAX,这都会调用 javascript。
此外,如果您需要通过 JavaScript 中的类型访问 FeedbackMessage
,我已将它们添加到 CSS 类中,我将其用于 bootstrap样式:
@Override
protected Component newMessageDisplayComponent(String id, FeedbackMessage message) {
Component c = super.newMessageDisplayComponent(id, message);
c.setEscapeModelStrings(false);
String bootstrapClass = "text-info";
switch (message.getLevel()) {
case FeedbackMessage.ERROR:
bootstrapClass = "text-danger";
break;
case FeedbackMessage.WARNING:
bootstrapClass = "text-warning";
break;
case FeedbackMessage.SUCCESS:
bootstrapClass = "text-success";
break;
case FeedbackMessage.FATAL:
bootstrapClass = "text-danger";
break;
case FeedbackMessage.DEBUG:
bootstrapClass = "text-danger";
break;
case FeedbackMessage.INFO:
bootstrapClass = "text-info";
break;
}
c.add(new AttributeAppender("class", bootstrapClass));
return c;
}
您可以使用此类来定位 JavaScript 中的反馈消息。
关于javascript - 如何在 Wicket FeedbackPanel 的 info()/error() 方法上调用 Javascript 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43050908/