About liangyongfei

该作者尚未填入任何详情
So far liangyongfei has created 485 blog entries.

文件上传的实现方法

1.使用attachmentSimple组件,当然服务器端接收文件的写法应该参考:/Baas/justep/SimpleFileStore.java http://docs.wex5.com/wex5-ui-question-list-2100 然后设置attachmentSimple 指向你的服务器! 2.如果你的服务器端sevlet 接口已经写好了,不是通过attachmentSimple 上传的!可以通过标准的ajax 去上传图片,比如参考:http://bbs.wex5.com/forum.php?mo ... 1&pid=165340769 这样input type=file就能上传了! 这种方法可以上网查! 3.app中还可以使用corodva插件实现文件上传!指定你写的servlet 接口即可 http://bbs.wex5.com/forum.php?mod=viewthread&tid=68669 http://bbs.wex5.com/forum.php?mo ... 8&pid=165225779

扩展空间的用法

在一些特殊情况下,开发者需要重写系统自带的源码,比如重新system目录下的某些组件源码,或者重新portal  下面的门户样式 等。 这个时候,不要直接去修改它的源码,因为这种做法,后期版本升级会很难维护的,因为你早已忘记自己修改了哪些资源?这些资源在版本升级后,有没有更新?  会造成各种冲突。。。 解决方法: 使用扩展空间的方式修改系统自带的源码,比如你想修改:\UI2\portal\sample\index.w 的文件 你就应该在UI2下 新建一个目录portal_X    将这个文件拷贝到扩展空间的相同目录结构下:\UI2\portal_X\sample\index.w    进行修改, 其他所有功能的扩展空间,文件修改也是这样做的!就是在UI2下  创建一个相同名称的文件夹  +  _X   命名,然后把要修改的文件拷贝到  _X 扩展的相同目录下, 运行的时候,扩展空间会自动覆盖原始空间的资源! 这样就保证了修改系统原始文件后,当x5版本更新后,也能知道哪些文件是自己改动过的,以便重新调整代码 (当然,自己创建的UI2下的应用,也支持扩展空间) 注意:由于java 和 jar包无法在扩展空间编译,所以,java 和 jar包只是名义上的放在扩展空间,真正运行的时候,可以把扩展空间的资源全部覆盖到原始空间去,这样既可以进行资源维护,也可以正常发布运行了,(就是如果扩展有java,必须覆盖到原始空间才能正常运行)

data组件设置各种规则后,通过js代码判断规则是否符合条件

1.js代码进行提示 data.isValid() 是判断data组件的规则是否都满条件 data.getInvalidInfo() 表示那些不符合规则的提示信息, var data = this.comp('data'); var isValid = data.isValid(); if(!isValid){ throw new Error (data.getInvalidInfo()); } 2.页面动态绑定提示信息 有些需求的页面是要 实时显示输入数据是否符合规则的 可以在页面上添加一个提示信息的标签 标签 bind-validationMessage 属性 绑定某个data组件字段的值! 当这个值输入不符合规则的时候! 设置绑定的标签就会动态显示,不符合规则的提示信息 , 3.案例:点击下载rule 查询出来的数据必须编辑后才生效的! 或者是新增的数据可以直接生效!data组件行状态如果是none,则规则不生效! [...]

data组件异步 保存和刷新 如何执行回调方法

保存和刷新的原理是一样的!这里以刷新为例 自己接管 onCustomRefresh   调用刷新 数据 方法, 可以是ajax请求后台,也可以是Baas.sendRequest 如果是异步请求async: true, 那么,默认情况下,data组件的 onAfterRefresh、onRefreshError事件或者refreshData 方法的  onSuccess、onError回调 都没办法触发的! 解决方法: 自己接管doRefreshAfter 事件 Model.prototype.masterDataCustomRefresh = function(event){ var data = event.source; //手动进行异步刷新时,执行成功后调用doRefreshAfter。 $.ajax({ type: "GET", url: require.toUrl(url), dataType: 'json', async: true, success: [...]

3.6版本编译资源后,部署www下的资源到报错 bootstrap.min.css 404

wex5 3.6版本编译资源的bug 资源发布后 chrome 开发工具 中的 网络 中出现两个 404 http://ip/www/v-1.2.4.1-zh_CN-/system/components/bootstrap/lib/css/bootstrap.min.css http://ip/www/v-1.2.4.1-zh_CN-/system/components/bootstrap/lib/css/bootstrap-theme.min.css   解决方法: 修改文件/UI2/system/components/bootstrap.min.css.xml <file>bootstrap/lib/css/bootstrap.min.css</file> <file>bootstrap/lib/css/bootstrap-theme.min.css</file> 将这两行代码替换成如下(就是把.min去掉)即可 <file>bootstrap/lib/css/bootstrap.css</file> <file>bootstrap/lib/css/bootstrap-theme.css</file>

单页应用中 多个w页面绑定同一个data组件

一般情况,每个.w中都只绑定 当前页面中的data组件!!如果想在另一个页面同步这个页面data修改后的值,只能通过页面交互,传参,赋值,或者派发事件传参,或者数据保存刷新,的方式实现。 并不建议多个.w绑定同一个data数据源,主要原因: 1.页面耦合度增高,要求必须data先初始化,这个页面才能打开运行。 2.因为是赋值给window对象的!如果命名冲突就会导致所有绑定此data的页面打开报错 如果这两点可以忽略或控制,那么多个页面绑定同一个data组件数据源,对于共享数据来讲是非常方便的! 方法: 1.在第一个打开的页面中,放置data组件(只有第一个页面初始化data,其他页面才能正常打开的,其他页面不能优先访问,切记) 2.在此页面的model构造方法,或者onload方法 中 ,将data组件赋值给window对象 : window.data = this.comp('data'); 3.其他页面中绑定window.data 即可,比如,input 的 bind-ref属性设置: window.data.ref("name") 其他绑定也是类似的写法,window.data.ref('字段') 或 window.data.val('字段')

data必填规则 不生效的解决方案

data 设置 必填规则 ,如果这个值是空的!那么对应的input 就会显示红框,但是默认刷新后,数据库中查询出来的数据,如果这个字段是空的,并不会显示红框 解决方法: 因为行状态是none 所以就不检查了! 可以通过修改状态就行了 var Data = require(“$UI/system/components/justep/data/data”) mydata.setRowState(row, Data.STATE.EDIT); 这样 就可以让规则生效了