[英]How to call a Javascript method on info() / error() method of Wicket FeedbackPanel?
How can I call a JavaScript method from Wicket feedback panel methods such as info()
and error()
. 如何从Wicket反馈面板方法(如info()
和error()
调用JavaScript方法。
What I am trying to do is, display MDL 's snackbar for Wicket FeddbackPanel
's error()
/ info()
methods. 我想做的是显示Wicket FeddbackPanel
的error()
/ info()
方法的MDL 小吃 FeddbackPanel
。 But to show the snackbar, we have to call a JavaScript method. 但是要显示小吃栏,我们必须调用JavaScript方法。 Which I don't know how to do, especially in non-ajax calls. 我不知道该怎么做,尤其是在非ajax调用中。
You could subclass FeedbackPanel and call the javascript in renderHead(IHeaderResponse response)
您可以将FeedbackPanel子类化,并在renderHead(IHeaderResponse response)
调用javascript。
Like this: 像这样:
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(OnDomReadyHeaderItem.forScript("callFancyJs();"));
}
This would call the javascript regardless of AJAX or not. 无论是否使用AJAX,这都将调用javascript。
Additionally if you need to access the FeedbackMessage
s by it's type in javascript i've added them CSS classes, which i use for bootstrap styling: 此外,如果您需要按javascript中的类型访问FeedbackMessage
,则将它们添加到CSS类中,以用于引导样式:
@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;
}
You could use this classes to target the feedback messages in your javascript. 您可以使用此类来定位JavaScript中的反馈消息。
您必须通过在服务器端处理的AJAX请求来执行此操作,并且此处理程序必须调用方法,然后,将面板添加到AjaxRequestTarget
以进行更新
You can take an inspiration from WicketStuff JGrowl integration: https://github.com/wicketstuff/core/tree/master/jquery-parent/jquery/src/main/java/org/wicketstuff/jquery/jgrowl 您可以从WicketStuff JGrowl集成中获得启发: https : //github.com/wicketstuff/core/tree/master/jquery-parent/jquery/src/main/java/org/wicketstuff/jquery/jgrowl
The way it does it to render a <script>
for each message. 它为每个消息呈现<script>
的方式。 This script has text like $.jgrowl({...})
. 该脚本具有$.jgrowl({...})
类的文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.