博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 ExtJS4 MVC 示例
阅读量:6352 次
发布时间:2019-06-22

本文共 19410 字,大约阅读时间需要 64 分钟。

task/new.jsp

1 <%@ page language="java" pageEncoding="UTF-8"%>  2   3 <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>  4   5   6   7 <%  8   9 String parentId = request.getParameter( "parentId" ) ;      10 String parentLatestEditionId = request.getParameter( "parentLatestEditionId" ) ;      11 String originId = request.getParameter( "originId" ) ;      12 String parentNodePath = request.getParameter("parentNodePath") ; 13 String rootId = request.getParameter("rootId") ; 14  15 if ( parentId==null || parentId.equals(""))    parentId = "-1" ; 16 if ( parentLatestEditionId==null || parentLatestEditionId.equals(""))    parentLatestEditionId = "-1" ; 17  18 /* 19    当回复时,只能回复最新的版本,历史版本不能被回复  20 */ 21 int intParentId = Integer.valueOf( parentId ).intValue() ; 22 int intParentLatestEditionId = Integer.valueOf( parentLatestEditionId ).intValue() ; 23 if ( intParentId > 0 && intParentId != intParentLatestEditionId ){ 24     out.println("

!!! 致命错误:历史版本不可以被回复。!!!

") ; 25 } ; 26 27 if ( originId==null || originId.equals("")) 28 originId = "-1" ; 29 30 31 if ( parentNodePath==null || "".equals(parentNodePath)) 32 parentNodePath = "" ; 33 34 if( rootId==null || "".equals(rootId) ) 35 rootId = "-1" ; 36 37 38 int intOriginId = Integer.valueOf( originId ).intValue() ; 39 40 if ( intParentId > 0 ) out.println("

《 回 复 》

") ; 41 else if ( intOriginId > 0 ) out.println("

《 修 改 》

") ; 42 else out.println("

《 新 增 》

") ; 43 44 45 46 %> 47 48 49 <% 50 String path = request.getContextPath( ) ; 51 String basePath = request.getScheme( )+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 52 %> 53 54
64 65 66 67 68 69 70
71
72 73 <%@ include file="../inc/link_ExtJS.jsp" %> 74 <%@ include file="../inc/css.jsp" %> 75 76 94 95 96 97 98 99
100
101 102 103 104 105 106 107 138 139 140 新增 | 修改 | 回复141 142 143
154 155
156 157
158
159 160
主题 : 161
163 164
165 166
167
168
( 提交快捷键: Ctrl + Enter )169

指派任务: ( 输入指派人number 用,分隔; )

170

涉及的技术 : ( 输入技术categoryNumber 用,分隔; )

171

172 userName:<%= request.getRemoteUser() %> |173 originId : <%= originId %> |174 parentId :<%= parentId %> |175 退出登录

176
177
178

说明:

179
    180
  1. 如果 uri 中无参数 ,表示新插入一条记录
  2. 181
  3. 如果 uri 参数中 parentId > 0 & rootId > 0 &parentNodePath != ''或者 !=null ,表示 回复(评论/备注/留言)
  4. 182
  5. 如果 uri 参数中 originId > 0 ,表示修改
  6. 183
184
185 186

 

task/new.js

1 Ext.Loader.setConfig({enabled: true});  2   3    4   5    6   7    8   9 Ext.application({ 10  11        name : 'i',// 为应用程序起一个名字,相当于命名空间 12  13        14  15        controllers : [ 16  17                       // 'SearchCtrler','LogGridCtrl' 18  19                       'task.NewCtrl' // 这是文件名 20  21                       ] , // 声明所用到的控制层 22  23        // controllers : ['SearchCtrler'] , // 声明所用到的控制层 24  25        26  27        launch : function() {
// 开始 28 29 30 31 consoleLog('2013.11.01 13:48') ; 32 33 34 35 Ext.create('i.view.task.NewFormView') ; 36 37 38 39 Ext.create('Ext.Button', { 40 41 text: 'Click me', 42 43 renderTo: Ext.getBody(), 44 45 handler: function() { 46 47 // alert('You clicked the button!'); 48 49 Ext.create('i.view.task.NewWindowView').show( ) ; // 这个控制代码应该写在 controller 下 50 51 } 52 53 }); 54 55 56 57 // Ext.create('Ext.container.Viewport', {
58 59 // layout: 'fit', 60 61 // items: [ 62 63 // {
64 65 // xtype: 'SearchGridView' 66 67 // } 68 69 // ] 70 71 // }); 72 73 74 75 } 76 77 }); 78 79 80 81 82 83 84 85 var fnc = { 86 87 // 页面表单提交 88 89 formSubmit : function(){ 90 91 // 获取KindEdtor textarea中的值 92 93 var taskContent = kindEditor.html(); 94 95 // 使用ExtJS的query获取 Html的DOM ,取值 96 97 var taskTitle = Ext.query( '#task_form input[name=bean.taskTitle]')[0].value ; // 值 OK 98 99 // 使用ExtJS的query获取 Html的DON ,取值100 101 var arrayUserNumbers = [] ;102 103 var tagNumbers = [];104 105 if( Ext.getDom('number').value.length!=0 ){106 107 arrayUserNumbers = Ext.getDom('number').value.split(",") ;108 109 }110 111 if( Ext.getDom('tag').value.length!=0 ){112 113 tagNumbers = Ext.getDom('tag').value.split(",") ;114 115 }116 117 // consoleLog('arrayUserNumbers :');118 119 // consoleLog(arrayUserNumbers.length );120 121 // alert(arrayUserNumbers.length);122 123 124 125 // Ajax126 127 Ext.Ajax.request({128 129 url: 'task!insert.action' ,130 131 params: {132 133 'bean.originId' : task.originId , // 原始ID134 135 'bean.parentId' : task.parentId , // 父ID136 137 'bean.latestCommentId' : task.latestCommentId , //138 139 'bean.userName' : task.userName , // 发布者姓名140 141 'bean.rootId' : task.rootId , //142 143 'bean.parentNodePath' : task.parentNodePath , // 父地址144 145 'bean.taskContent' : taskContent , // 内容146 147 'bean.taskTitle' : taskTitle ,// 标题148 149 'bean.userNumbers' : arrayUserNumbers ,//指派用户Number150 151 'bean.tagNumbers' : tagNumbers //标签152 153 },154 155 success: function( response ){156 157 158 159 var json = Ext.JSON.decode( response.responseText );160 161 var taskId = 0 ;162 163 Ext.Array.each( json.rowList , function( record, index, itSelf ) {164 165 // kindEditor.html(record.taskContent);166 167 consoleLog( record.id ) ;168 169 taskId = record.id ;170 171 });172 173 alert("发布成功!");174 175 window.location = "task/item.jsp?id=" + taskId ;176 177 178 179 },180 181 failure: function( resp,opts ) { // 失败182 183 var respText = Ext.util.JSON.decode(resp.responseText); 184 185 Ext.Msg.alert('错误', respText.error); 186 187 } 188 189 });190 191 } ,192 193 194 195 //-----------------------------加载 task_info信息---------------------------------------196 197 198 199 // 获取任务信息200 201 getTaskInfo : function(){202 203 // Ajax204 205 Ext.Ajax.request({ 206 207 url: 'task!selectList.action' ,208 209 params: {210 211 'bean.id' : task.originId ,212 213 'limit' : 1 ,214 215 'bean.unusefulValue' : ''216 217 },218 219 success: function( response ){220 221 var json = Ext.JSON.decode( response.responseText );222 223 224 225 Ext.Array.each( json.rowList , function( record, index, itSelf ) {226 227 Ext.query( '#task_form input[name=bean.taskTitle]')[0].value = record.taskTitle; // 值 OK228 229 kindEditor.html(record.taskContent);230 231 task.rootId = record.rootId ;232 233 task.parentId = record.parentId ;234 235 task.latestCommentId = record.latestCommentId ;236 237 });238 239 },240 241 failure: function( resp,opts ) { // 失败242 243 var respText = Ext.util.JSON.decode(resp.responseText); 244 245 Ext.Msg.alert('错误', respText.error); 246 247 } 248 249 });250 251 }252 253 254 255 }256 257 ;258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 var start = function(){278 279 280 281 // Ext.tip.QuickTipManager.init() ;282 283 284 285 // 延时启动286 287 if(task.originId > 0){288 289 setTimeout( function(){290 291 // fnc.getUserInfo( loginedUser ) ;292 293 fnc.getTaskInfo() ;294 295 }, 500 ) ;296 297 298 299 }300 301 302 303 } ; // start304 305 306 307 Ext.onReady( function () {308 309 start() ;310 311 });312 313 314 315

app/controller/task/NewCtrl.js

1 /*  2 商品控制层,  3 所有逻辑代码都在这里写  4  */  5   6 Ext.define(      7   8     'i.controller.task.NewCtrl' ,  9      10     { 11         extend : 'Ext.app.Controller', 12         stores : [  13                 // 'LogStore'  14             ], 15         models : [  16                 // 'LogModel'  17             ], 18         views : [  19                 // 'log.SearchGridView','log.SearchFormWinView'  20                 // task.NewWindowView 21                 'task.NewWindowView' // 文件名 22                 , 'task.NewFormView' 23             ], 24         refs : [ 25             { 26                 ref : 'taskNewWindow_view', 27                 selector : 'task.NewWindowView' 28             } , 29             { 30                 ref : 'NewForm', // 为了 setter 和 getter 方法 31                 selector : 'taskNewFormView' // 这里用别名 32             }  33         ], 34         init : function() { 35  36             consoleLog( '2013.11.01 13:59' ) ; 37             consoleLog( this ) ; 38              39             // 创建 Windows (2013.11.01 Livon) 40              41             this.control({ 42                 //弹出搜索框 43                 'viewport > SearchGridView': { 44                     afterrender: function( gp ){ // 侦听 SearchGirdView 渲染 45                         gp.down('button[action=onSearch]').on('click',function(){ 46                             // 侦听 SearchGirdView 工具条上 action=onSearch 的按钮单击事件 47                             this.showWin(); 48                         },this); 49                         gp.down('button[action=onNew]').on('click',function(){ 50                             // 侦听 SearchGirdView 工具条上 action=onSearch 的按钮单击事件 51                             window.open('task/new.jsp'); 52                         },this ); 53                     } 54                 } , 55                  56                 'taskNewFormView button[action=onPrePage]' : { 57                     click : function(){ 58                         consoleLog( '2013.11.01 14:17' ) ; 59                     } 60                 } , 61                  62                 'taskNewFormView button[action=show_selectUserWindow]' : { 63                     click : function(){ 64                         consoleLog( '2013.11.01 14:47' ) ; 65                         this.show_selectUserWindow( ) ; 66                     } 67                 } , 68                  69                 //  70                  71                 'taskNewFormView items[name=SearchByKeyWord]' : { 72                     focus : function(){ 73                         consoleLog( '2013.11.01 14:23' ) ; 74                     } 75                 } , 76                  77                  78                 'taskNewWindowView button[action=ok]' : { // taskNewWindowView 是别名!!!! 79 //                'NewForm button[action=ok]' : {
80 click : function(){ 81 // this.taskInfo(); 82 consoleLog( '2013.11.01 15:21' ) ; 83 var f = this.getNewForm( ) ; 84 // consoleLog( f ) ; 85 // consoleLog( f.getForm( ) ) ; 86 // consoleLog( f.getForm( ).getValues( ) ) ; 87 var v = f.getForm( ).getValues( ) ; 88 consoleLog( v.startDate ) ; 89 } 90 } , 91 92 '#number' : { 93 click : function(){ 94 consoleLog( '2013.11.01 13:58' ) ; 95 } 96 } 97 98 }); // this.control 99 } // init ( )100 101 , show_selectUserWindow : function( ) {102 Ext.create('i.view.task.NewWindowView').show( ) ;103 }104 105 106 }) ; // define

app/task/NewFormView.js

1 /*!  2 * 搜索表单view层,这里只是一个负责显示的grid,没有逻辑代码  3 */  4 consoleLog( this ) ;  5   6 Ext.define('i.view.task.NewFormView' ,  7     Ext.create('Ext.form.Panel', {  8     // renderTo : Ext.getBody(),  9     store: 'SearchStore', 10     alias : 'widget.taskNewFormView', 11     // renderTo : 'form_holder_td' , 12     renderTo : Ext.getBody() , 13     draggable : true , 14     title : 'Search Form ', 15     // height : 180, 16     width : 480, 17     collapsible : true , 18     bodyPadding : 10, 19     defaultType : 'textfield', 20     // layout: 'auto', 21     url : '', // 提交地址 22      23  24     defaults: { 25         anchor: '100%', 26         labelWidth: 100 27     }, 28      29     items : [  30                 { 31                     xtype: 'fieldcontainer', 32                     fieldLabel: '相关人员', 33                     combineErrors: true, 34                     msgTarget : 'side', 35                     layout: 'hbox', 36                     defaults: { 37                         hideLabel: true 38                     }, 39                     items: [ 40                         { 41                             xtype     : 'textfield', 42                             name      : 'startDate', 43                             fieldLabel: 'Start', 44                             margin: '0 5 0 0', 45                             flex: 1, 46                             allowBlank: false 47                         }, 48                         { 49                             xtype:'button',   50                             text: 'Select',   51                             // width:50 ,  52                             action : 'show_selectUserWindow' 53                         } 54                     ] 55                 }, 56                  57                 { 58         fieldLabel : 'SearchByName', 59         name : 'SearchByName' 60     }, { 61         fieldLabel : 'SearchByTag', 62         name : 'SearchByTag' 63     }, { 64         fieldLabel : 'Search By Key Word', 65         name : 'SearchByKeyWord' 66     } , 67     { 68  69         xtype : 'fieldcontainer', 70         // layout: 'hbox', 71         combineErrors: true, 72         msgTarget: 'side', 73         fieldLabel: 'Full Name', 74         defaults: { 75             hideLabel: true 76         }, 77         items : [ 78             { 79                 //the width of this field in the HBox layout is set directly 80                 //the other 2 items are given flex: 1, so will share the rest of the space 81                 width:          65, 82  83                 xtype:          'combo', 84                 mode:           'local', 85                 value:          'mrs', 86                 triggerAction:  'all', 87                 forceSelection: true, 88                 editable:       false, 89                 fieldLabel:     'Title', 90                 name:           'title', 91                 displayField:   'name', 92                 valueField:     'value', 93                 queryMode: 'local', 94                 store:          Ext.create('Ext.data.Store', { 95                     fields : ['name', 'value'], 96                     data   : [ 97                         {name : 'Mr',   value: 'mr'}, 98                         {name : 'Mrs',  value: 'mrs'}, 99                         {name : 'Miss', value: 'miss'}100                     ]101                 })102             },103             {104                 xtype: 'textfield',105                 flex : 1,106                 name : 'firstName',107                 fieldLabel: 'First',108                 allowBlank: false109             },110             {111                 xtype: 'textfield',112                 flex : 1,113                 name : 'lastName',114                 fieldLabel: 'Last',115                 allowBlank: false,116                 margins: '0'117             }118         ]119     }120     121     122     ],123     buttons : [ {124         text: 'prePage',  125         action : 'onPrePage'126     }, {127         text: 'nexPage',  128         action : 'onNexPage'129     }, {130         text : 'Search',131         action: 'onSubmit'132     } ]133 })134 );

app/task/NewWindowView.js

1 /** 2 这里只是一个负责显示的窗口 3 */ 4  5 Ext.define( 6         'i.view.task.NewWindowView',  7          8         { 9     extend: 'Ext.window.Window',10     alias : 'widget.taskNewWindowView', // 别名似乎没用 !?11     title : '测试',12     autoShow: false,13     height: 200,14     width: 300,15     items : [16 //             Ext.create('i.view.task.NewFormView')17 18             Ext.create('Ext.form.Panel', {19                 // draggable : true ,20                 title : 'Search Form '21             })22     23     24              ] ,25     initComponent: function() {26         this.buttons = [27             {28                 text: '点我改变标题',29                 scope: this,30                 action: 'ok'31             } ,32             {33                 text: '关闭',34                 scope: this,35                 handler: function(){36                     this.close() ;37                     console.log( 'clicked' ) ;38                 }39             } ,40             41 //            Ext.create('search.view.goods.CloseWindowButtonView')42             43         ];44         this.callParent( arguments ) ;45     }46 });

 

转载于:https://www.cnblogs.com/livon/p/3402365.html

你可能感兴趣的文章
网站设计之合理架构CSS 架构CSS
查看>>
OTP 22.0 RC3 发布,Erlang 编写的应用服务器
查看>>
D语言/DLang 2.085.1 发布,修复性迭代
查看>>
感觉JVM的默认异常处理不够好,既然不好那我们就自己来处理异常呗!那么如何自己处理异常呢?...
查看>>
Java 基础 之 算数运算符
查看>>
Windows下配置安装Git(二)
查看>>
一个最简单的基于Android SearchView的搜索框
查看>>
铁路开通WiFi“钱景”不明
查看>>
Nutanix领衔的超融合能带来新存储黄金时代吗?
查看>>
Facebook申请专利 或让好友及陌生人相互拼车
查看>>
电力“十三五”规划:地面光伏与分布式的分水岭
查看>>
美联社再告FBI:要求公开请黑客解锁iPhone花费
查看>>
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>
思科联手发那科 用物联网技术打造无人工厂
查看>>
智慧城市首要在政府利用大数据的智慧
查看>>
2015年物联网行业:巨头展开专利大战
查看>>
以自动化测试撬动遗留系统
查看>>
网络安全初创公司存活之道
查看>>
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>