当前位置: 首页 > 知识库问答 >
问题:

如何增加Vaadin通知/警告时间?

颛孙哲
2023-03-14

如何增加Vaadin通知/警告时间?我用的是Vaadin Valo主题。从Vaadin的书籍通知页面没有任何帮助。

共有1个答案

谷梁子濯
2023-03-14

首先请注意,默认情况下,五种类型的通知具有不同的延迟。

  • notification.type.humanized_message
    显示,直到用户移动鼠标指针。
  • notification.type.tray_notification
    在用户移动鼠标指针3秒后显示。
  • notification.type.warning_message
    显示到用户移动鼠标指针后1.5秒。
  • notification.type.error_message
    显示,直到用户单击消息。(延迟设置为-1毫秒)
  • notification.type.assistive_notification
    在Mac OS X Mountain Lion上的Safari中不为我执行任何操作。

参见下面演示每种类型的示例应用程序的源代码。

例如,要将延迟设置为7秒,首先必须转换为毫秒。

notification.setDelayMsec( 7 * 1_000 );

或者使用timeunit转换器替换“魔术”数字。转换器只生成long值,因此我们必须强制转换为int以满足Vaadin setter。

notification.setDelayMsec( ( int ) TimeUnit.SECONDS.toMillis( 7 ) );

小心默认值中的一个大的行为变化。如果在error_message上设置了正延迟数,则用户无需点击即可解除;移动鼠标指针后,延迟到期后,错误消息将消失。

当禁用/启用setter时,您可能需要重新启动您的Vaadin应用程序。(或者购买JRebel的许可证以避免重启。)

package com.example.vaadinnotifs;

import javax.servlet.annotation.WebServlet;

import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.annotations.Widgetset;
import com.vaadin.server.Page;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Notification;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import java.util.concurrent.TimeUnit;

/**
 *  By Basil Bourque. 
 *
 * Source code provided under MIT License. 
 * http://opensource.org/licenses/MIT
 */
@Theme ( "mytheme" )
@Widgetset ( "com.example.vaadinnotifs.MyAppWidgetset" )
@SuppressWarnings ( "serial" )
public class MyUI extends UI
{

    @Override
    protected void init ( VaadinRequest vaadinRequest ) {
        final VerticalLayout layout = new VerticalLayout();
        layout.setMargin( true );
        layout.setSpacing( true );
        setContent( layout );

        layout.addComponent( this.makeButton( Notification.Type.HUMANIZED_MESSAGE ) );
        layout.addComponent( this.makeButton( Notification.Type.TRAY_NOTIFICATION ) );
        layout.addComponent( this.makeButton( Notification.Type.WARNING_MESSAGE ) );
        layout.addComponent( this.makeButton( Notification.Type.ERROR_MESSAGE ) );
        layout.addComponent( this.makeButton( Notification.Type.ASSISTIVE_NOTIFICATION ) );
    }

    @WebServlet ( urlPatterns = "/*" , name = "MyUIServlet" , asyncSupported = true )
    @VaadinServletConfiguration ( ui = MyUI.class , productionMode = false )
    public static class MyUIServlet extends VaadinServlet
    {
    }

    private Button makeButton ( Notification.Type typeArg ) {
        // Taking advantage of Java’s nifty Enum capability to generically produce each Button instance.
        Button b = new Button( typeArg.name() );
        b.setData( typeArg );  // "setData" and "getData" are accessors for a little hiding place for any object you wish to carry with a Vaadin widget.
        b.addClickListener( new Button.ClickListener()
        {
            @Override
            public void buttonClick ( ClickEvent event ) {
                Notification.Type t = ( Notification.Type ) event.getButton().getData();  // Cast from Object type used by the widget’s hiding place to the `Notification.Type` type we know we used.
                Notification notification = new Notification( "This is a Notification message." , t );
                //notification.setDelayMsec( ( int ) TimeUnit.SECONDS.toMillis( 7 ) );
                Integer delayMillis = notification.getDelayMsec();
                String description = "Notification.Type: " + t.name() + " has delay of " + delayMillis + " ms.";
                notification.setDescription( description );
                notification.show( Page.getCurrent() );
            }
        } );
        return b;
    }

}
 类似资料:
  • 说明 此消息用于统一的门店异常告警消息上传,目前支持结账异常消息 请求地址 http://api.dc78.cn/Api/msg_err_post 请求方式 POST 请求参数 GET参数 描述 type=cash,异常类型,cash:结账支付异常,warn:营业异常(如退单) POST参数 描述 title=消息类型(如:退单) msg=桌台888结账失败,原因。。。 返回 { "status"

  • 此消息用于统一的门店异常告警消息上传,目前支持结账异常消息。 发送的消息将通过来管家通知消息发送给相关人员,需要在商家后台进行相关通知消息的订阅后才能正常接收到推送。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 msg_err_post string get GET参数组,本组参数需要参与签名 是 ob

  • 此消息用于统一的门店异常告警消息上传,目前支持结账异常消息。 发送的消息将通过来管家通知消息发送给相关人员,需要在商家后台进行相关通知消息的订阅后才能正常接收到推送。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 msg_err_post string get GET参数组,本组参数需要参与签名 是 ob

  • MAC地址如果变化,WGCLOUD系统会发送邮件通知,怎么关闭这个通知呢

  • WGCLOUD如何屏蔽主机登录信息的告警信息