报错:Caused by: java.sql.SQLException: Already closed.

现象: Caused by: java.sql.SQLException: Already closed. at org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnecti on.java:114) 原因: 在长时间没有访问tomcat后,数据库连接已经失效,连接池因为没有检测,所以认为连接有效,导致连接出错。避免这种错误的方法是设置连接有效查询sql语句。设置后,连接池会使用该sql语句测试连接是否有效,如果无效,会重新建立连接。 解决方案: 设置方法为:在%JUSTEP_HOME%\apache-tomcat\conf\context.xml中的节点中增加属性validationQuery mysql数据库: <Resource name="jdbc/cloud" type="javax.sql.DataSource" maxActive="100" maxIdle="30" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/cloud" username="root" password="x5" validationQuery="select 1"/> SQLServer数据库: 在server.xml中的节点中增加属性validationQuery="select sysdate from dual;"。例如: [...]

APP引导页制作

原因: 在APP中经常见到,第一次启动的时候,有三张或者更多图片来回切换,介绍此APP的使用方法或做广告!点确定,进入APP后,第二次启动APP就不会出现了!这个使用WeX5也很简单就实现了 解决方案: 参考我们的外卖案例:/UI2/takeout 只需要把 intro目录 intro.js intro.html 这三块资源都复制到你资源首页同级的目录下就可以了!打包的时候会自动加载生成在APP中的!要求必须是访问本地资源(资源打到包里)   如果资源不打到包里,或者是模式3打包的,调试模式启动服务器,这样没错都访问服务器资源是不会出现向导页的,可以手动在首页引入intro.js就可以了!   注意: 1.拷贝过来的文件名都不能修改!打包的时候会去自动找这个名称intro.html 的文件 2.如果想每次打开APP都显示这些页面,只需要删除intro.html文件中的一行代码: localStorage.setItem(x5Version + 'introPage', 'false'); 这样重新打包后,APP 每次重新打开都有引导页

list嵌套需要注意的问题

案例参考请点击下载案例 原因:很多用户在做list嵌套的时候,由于一些细节配置的原因不明白,导致运行不成功!下面我说下list嵌套中需要注意的点 解决方案: 1.条件设置: 第二层的list组件需要设置filter属性,表示根据第一次list当前行数据过滤出符合条件要显示的数据,比如: $row.val('id')==$object.val('ID'),其中 $row.val('id')表示的是第二个list绑定的data的字段 $object.val('ID')表示的是第一个list组件(父)绑定的data字段! 意思就是根据第一个list组件中当前行的ID过滤出第二个list组件中 id=ID 的数据 (理解一下含义! $row 是list 上层的当前行! $object是 list 里层对应当前行 分界线就是class属性 x-list-template 上层dom节点用$row ,下层的就是$object 所以 第二个list 的 filter属性 $row 表示里层list的当前行,,$object表示外层list的当前行! 里层list中获取父层的当前行对象可以使用$parent ) 2.数据请求: 第二层list对应的data组件数据应该一次性加载到data组件中(为了全部显示,保证第一层的子数据全部存在,或者设置过滤条件!根据第一层已经加载的数据的ID去查下第二层数据),所以 data组件autoLoad 设置为true,limit设置为-1,第二层list的limit属性设置为-1 如果第二层的list, 想根据条件,只查询父存在,所关联的子数据(保证请求数据最少) [...]

list组件中只想保存当前行数据

原因:data组件保存操作是针对整个data组件中的数据的!有些用户想编剧数据后只对当前行数据进行保存,如图: 解决方案: 把data组件中其他行数据的状态都改成NONE,只把当前行数据的状态改成EDIT,这样执行保存操作就只会保存当前行数据了!   //开头需要引入data,         var Data = require(“$UI/system/components/justep/data/data”) Model.prototype.td6Click = function(event){ var zszsBaasData= this.comp("zszsBaasData"); /* *用于处理只保存当前行数据 *先将data中所有行数据状态设为NONE */ zszsBaasData.each(function(param) { zszsBaasData.setRowState(param.row, Data.STATE.NONE); }); //获取当前行 var row = event.bindingContext.$object; //再将当前行的数据状态设为EDIT zszsBaasData.setRowState(row, [...]

打包APP 报错 at ‘value’ with value ‘??????????’

现象: [aapt] D:\ww\model\Native\同大\build\src\platforms\android\res\xml\config.xml:94: error: Error: No resource found that matches the given name (at 'value' with value '??????????'). [aapt] [aapt] D:\ww\model\Native\同大\build\src\platforms\android\res\xml\config.xml:95: error: Error: No resource found that matches the given name (at 'value' with [...]

服务器端设置.w映射为html

现象: 编译后的www下的资源,部署到不同的服务器上,有时候会出现访问.w页面的时候,页面直接显示html源码,或者url地址上显示html源码,或者直接下载.w文件到本地 原因:因为.w文件是X5 自己规定的页面后缀规范,其他的服务器端并不能够主动识别这是html页面!所以就需要配置一下!一般服务器都有这样的配置文件, 解决方案: Apache 的路径是%APACHE_HOME%/conf/mime.types nodeJs 的文件是 mime.js tomcat 中web.xml有这样的配置 <mime-mapping> <extension>w</extension> <mime-type>text/html</mime-type> </mime-mapping> 总结就是,所有服务器配置映射的名称都有mime这个字眼!具体不同的服务器配置文件请上网查询

动态创建panel组件

原因:动态创建组件的连接是:http://doc.wex5.com/comp-base/#2.2 一般,只要组件的js代码中实现了buildTemplate方法,都可以使用new的方式动态创建,panel组件是一个布局组件,一般不会使用动态创建!但是它也是可以实现的!和其他组件的创建类似 解决方案:参考下面的代码! define(function(require) { var $ = require("jquery"); var justep = require("$UI/system/lib/justep"); var Panel = require("$UI/system/components/justep/panel/panel"); var Model = function() { this.callParent(); }; Model.prototype.modelLoad = function(event) { var parentNode = this.getElementByXid("window"); if (parentNode) [...]

tomcat调试模式运行设计器及打包APP

原因: 1.有时候,设计器中页面会出现莫名其妙的问题!这个时候想看错误信息就需要设置为调试模式! 2.测试 打包APP的时候,如果中间想停止打吧,或重新打包,必须等服务执行完才可以!或者重启studio,比较费劲,如果使用tomcat作为服务器来打包,就方便了!直接重启tomcat就可以了! 解决方案: 只需要如图设置,勾选一个配置,如图: 然后重启tomcat,就会发现,编辑设计器页面的时候,tomcat控制台也会有日志信息! 打包APP的时候,也可以看到控制台日志信息!打包中的程序如果想停止,可以重启tomcat,就方便很多了! [/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

WeX5中调试java

原因:很多时候,编写java代码的时候都需要打断点进行调试,比如BaasServer ,比如.j 比如3.2.1版本的baas 解决方案: 1.如果资源没有导入,就需要导入资源,比如3.2.1版本的baas,其实就是一个sevlet,步骤就是切换到java视图!右键,导入资源(注意不要选择复制资源,只是导入) 2.如图:设置支持调试的模块: 3.导入的sevlet资源 或者是.j都需要在它的父目录右键,设置为源码路径。 4.打断点,重启tomcat,运行程序,会自动提示切换到调试模式! 然后就可以愉快的调试java代码了!

3.2.1版本的baas放在3.4版本中使用

原因:好多用户使用v3.2.1 版本开发的应用,在升级到3.4版本的过程中,遇到问题!主要有两个。 1.baasServer有很大的变动。 2.corodva插件有升级。 解决方案: 1. V3.2.1版本apache-tomcat\webapps下的baas拷贝到新版相同路径下,为了区别,把baas目录改名为baasm,该目录下的.project文件中修改为baasm,拷贝\model\UI2\demo\baas下的baas.js,其中有段代码要改为BASE_URL : "/baasm" 2. cordova版本从4.0升级到5.4.1,平台自带插件全面升级到5.4.1,相关案例也做了适配升级。 注:cordova升级到5.4.1后,原插件的引用名称需要调整,调用方法不变, V3.4 提供了相应的升级工具,下载地址:http://pan.baidu.com/s/1gfEsSaZ