如何从Wicket反馈面板方法调用JavaScript方法,例如info()
和error()
。
我要做的是,为Wicket显示MDL snackbar FeddbackPanel
error()
/ info()
方法。但要显示小吃栏,我们必须调用JavaScript方法。我不知道该怎么做,特别是在非ajax电话中。
答案 0 :(得分:2)
您可以将FeedbackPanel子类化并在renderHead(IHeaderResponse response)
像这样:
@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中的反馈消息。
答案 1 :(得分:0)
你必须通过在服务器端处理的AJAX请求来执行此操作,并且此处理程序必须调用该方法,然后将面板添加到AjaxRequestTarget
以进行更新
答案 2 :(得分:0)
您可以从WicketStuff JGrowl集成中获取灵感:https://github.com/wicketstuff/core/tree/master/jquery-parent/jquery/src/main/java/org/wicketstuff/jquery/jgrowl
它为每条消息呈现<script>
的方式。此脚本的文本类似于$.jgrowl({...})
。