﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Terry.Li-彬-文章分类-Web前端</title><link>http://www.blogjava.net/libin2722/category/47429.html</link><description>虚其心，可解天下之问；专其心，可治天下之学；静其心，可悟天下之理；恒其心，可成天下之业。</description><language>zh-cn</language><lastBuildDate>Fri, 06 Dec 2013 07:22:50 GMT</lastBuildDate><pubDate>Fri, 06 Dec 2013 07:22:50 GMT</pubDate><ttl>60</ttl><item><title>Ajax Session Timeout 超时 处理</title><link>http://www.blogjava.net/libin2722/articles/407255.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Thu, 05 Dec 2013 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/407255.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/407255.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/407255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/407255.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/407255.html</trackback:ping><description><![CDATA[/**<br /> * Author : Larry Li<br /> * Date : 2013-12-5<br /> * Email : larry.li@aicent.com<br /> */<br />var Session = function() {<br />    var defaults = {<br />            title        : 'Session Notification',<br />            message      : 'Your session is about to expire.',<br />            keepAliveUrl : '/admin/session/keep-alive',<br />            redirUrl     : '/account/timed-out',<br />            logoutUrl    : '/account/logout',<br />            warnAfter    : 900000, // 15 minutes<br />            redirAfter   : 1200000 // 20 minutes<br />    };<br />    <br />    var o = defaults, dialogTimer, redirTimer;<br />    <br />    var controlRedirTimer = function(action) {<br />        switch(action) {<br />            case 'start':<br />                // Dialog has been shown, if no action taken during redir period, redirect<br />                redirTimer = setTimeout(function(){<br />                    window.location = o.redirUrl;<br />                }, o.redirAfter - o.warnAfter);<br />                break;<br />    <br />            case 'stop':<br />                clearTimeout(redirTimer);<br />                break;<br />            case 'restart':<br />                clearTimeout(redirTimer);<br />                redirTimer = setTimeout(function(){<br />                    window.location = o.redirUrl;<br />                }, o.redirAfter - o.warnAfter);<br />                break;<br />        }<br />    };<br />    <br />    var controlDialogTimer = function(action) {<br />        switch(action) {<br />            case 'start':<br />                dialogTimer = setTimeout(function(){<br />                    $('#sessionTimeout-dialog').modal('show');<br />                    controlRedirTimer('start');<br />                }, o.warnAfter);<br />                break;<br />            case 'stop':<br />                clearTimeout(dialogTimer);<br />                break;<br />            case 'restart':<br />                clearTimeout(dialogTimer);<br />                dialogTimer = setTimeout(function(){<br />                    $('#sessionTimeout-dialog').modal('show');<br />                    controlRedirTimer('restart');<br />                }, o.warnAfter);<br />                break;<br />        }<br />    };<br />    <br />    var doKeepAlive = function() {<br />        $.ajax({<br />            type: 'POST',<br />            url: o.keepAliveUrl,<br />            success: function() {<br />                // Stop redirect timer and restart warning timer<br />                controlRedirTimer('restart');<br />                controlDialogTimer('restart');<br />            }<br />        });<br />    };<br />    <br />    return {<br />        sessionTimeout: function(options) {<br />            if ( options ) { o = $.extend( defaults, options ); }<br />            <br />            var warning_dialog = '&lt;div class="modal fade" id="sessionTimeout-dialog"&gt;'<br />                                +'    &lt;div class="modal-dialog modal-small"&gt;'<br />                                +'        &lt;div class="modal-content"&gt;'<br />                                +'            &lt;div class="modal-header"&gt;'<br />                                +'                &lt;button id="_close" type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&amp;times;&lt;/button&gt;'<br />                                +'                &lt;h4 class="modal-title"&gt;'+ o.title +'&lt;/h4&gt;'<br />                                +'            &lt;/div&gt;'<br />                                +'            &lt;div class="modal-body"&gt;'+ o.message +'&lt;/div&gt;'<br />                                +'            &lt;div class="modal-footer"&gt;'<br />                                +'                &lt;button id="sessionTimeout-dialog-logout" type="button" class="btn btn-default"&gt;Logout&lt;/button&gt;'<br />                                +'                &lt;button id="sessionTimeout-dialog-keepalive" type="button" class="btn btn-primary" data-dismiss="modal"&gt;Stay Connected&lt;/button&gt;'<br />                                +'            &lt;/div&gt;'<br />                                +'        &lt;/div&gt;'<br />                                +'    &lt;/div&gt;'<br />                                +'&lt;/div&gt;';<br />            <br />            $('body').append(warning_dialog);<br />            <br />            $('#sessionTimeout-dialog-logout').on('click', function () { window.location = o.logoutUrl; });<br />            <br />            $('#_close,#sessionTimeout-dialog-keepalive').click(function() {<br />                doKeepAlive();<br />            });<br />            // Begin warning period<br />            controlDialogTimer('start');<br />        },<br />        <br />        sessionTimeoutKeepAlive: function() {<br />            controlRedirTimer('restart');<br />            controlDialogTimer('restart');<br />        }<br />    };<br />}();<br /><br />$(function() {<br />    Session.sessionTimeout({<br />        title: 'Session Timeout Notification',<br />        message: 'Your session is about to expire.',<br />        keepAliveUrl: contextPath + '/admin/session/keep-alive',<br />        redirUrl: contextPath + '/account/login',<br />        logoutUrl: contextPath + '/account/logout',<br />        warnAfter: 1500000, <br />        redirAfter: 1780000<br />    });<br />    <br />    $(document).ajaxComplete(function() {<br />        Session.sessionTimeoutKeepAlive();<br />    });<br />});<img src ="http://www.blogjava.net/libin2722/aggbug/407255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2013-12-05 16:11 <a href="http://www.blogjava.net/libin2722/articles/407255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GWT基础框架使用</title><link>http://www.blogjava.net/libin2722/articles/341287.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Tue, 21 Dec 2010 16:36:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/341287.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/341287.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/341287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/341287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/341287.html</trackback:ping><description><![CDATA[1. 我们通过 xxx.gwt.xml中的：
<br />        &lt;entry-point
<br />                
class='com.huawei.iread.manager.frame.client.ModuleEntryPoint' 
/&gt;中进入我们预置的类：ModuleEntryPoint'中的 public void onModuleLoad()方法
<br /><br />       
<br />   2. 主要通过分配器来进行页面的调整
<br />        
<br />        2.1 dispatcher中添加控制器controneller.
<br />        2.2 controneller中注册各种事件的处理方式
<br />        2.3 跳转到制定的页面只需要调用dispatch(注册的事件)
<br />  
<br />  详细代码如下所示:
<br />  onModuleLoad方法：
<br />       Dispatcher.get().addController(new FrameController());                //分配器添加控制器
<br />      Dispatcher.get().addController(new WorkController());
<br />      Dispatcher.get().dispatch(new EventType(FrameEvents.INIT));           //跳转到init事件的处理
<br /><br /><br />  3.FrameController控制器中注册事件:
<br /><br />    //控制持有一个视图对象 view
<br />     view = new FrameView(this);
<br />          
<br />     // 给控制器添加注册的事件 
<br />     registerEventTypes(new EventType(FrameEvents.INIT));
<br /><br />     
<br />    控制器拥有一个事件的集合（LIST），及需要覆盖 public void handleEvent(AppEvent event)方法：
<br />   该方法即是处理注册事件的方法.一般在其中处理页面跳转
<br />     @Override
<br />    public void handleEvent(AppEvent event)
<br />    {
<br />        GWT.log("FrameController event:"+event.getType().getEventCode());
<br /><br />        //该方法就是初始化控制器所持有的view的初始化 其中再调用handleEvent方法
<br />        forwardToView(view, event);
<br />    }
<br />   
<br />  4.view 对象 
<br />    
<br />     4.1持有一个viewPoint对象，该对象继承之LayoutContainer，即属于容器类对象
<br />    @Override
<br />    protected void handleEvent(AppEvent event)
<br />    {
<br />            GWT.log("frame view code:"+event.getType().getEventCode());
<br />        if (event.getType().getEventCode() == FrameEvents.INIT)
<br />        {
<br />            viewPort = new Viewport();
<br />            viewPort.setLayout(new BorderLayout());
<br />            
<br />           //构建画面
<br />            Registry.register("viewport", viewPort);
<br />            Registry.register("north", north);
<br />            Registry.register("south", south);
<br />            Registry.register("west", west);
<br />            Registry.register("center", center);
<br />            viewPort.repaint();
<br /><br />           //添加容器
<br />            RootPanel.get().add(viewPort);            
<br />        }
<br />    }
<br />  
<br />    4.2持有一个控制器对象crontroller
<br />      
<br /><br /> 5 Registry对象
<br /><br />   维护一个map,将一些公用的容器添加到application级别的map中
<img src ="http://www.blogjava.net/libin2722/aggbug/341287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2010-12-22 00:36 <a href="http://www.blogjava.net/libin2722/articles/341287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>