NutzCN Logo
精华 NutzWk v4.x 版本起航~~模块化、接口化、统一提供代码生成器、IDEA插件等~
发布于 2836天前 作者 大鲨鱼 18539 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

NutzWk 基于Nutz的开源企业级开发框架

在线演示地址

https://nutzwk.wizzer.cn/ NutzWk v3.x、v4.x

https://vue.wizzer.cn NutzWk v3.x-vue

前言

本项目源于2010年,那时老东家还在使用Jsp和Struts1,需要手动创建并释放连接池、需要配置XML请求路径和类映射关系、要支持刚刚兴起的JSON非常痛苦等等的原因,开始选择适用“快速开发、功能丰富、扩展性强、性能优越”等技术要求的框架产品,讨厌Spring的繁杂配置、Hibernate及Mybatis的繁琐,讨厌一切让开发变得低效和繁杂的技术,这和Nutz的设计理念不谋而合。

使用本框架开发商用项目始于2012年,先是基于NutzWk v1.0开发了CMS网站群管理系统、网络问政系统,而后分别用于交通厅网站群项目、12345市长热线项目、财政厅数据上报、羽毛球场地管理等项目中,经过几年的积累,使用NutzWk v1.0及 v3.x开发并商用的项目少则几十多则上百。因为她是开源的,不光老东家和现所在公司在用,广大网友也在用哦。

我们有强大的后援 —— Nutz 社区支持 https://nutz.cn 及 Nutz 使用手册 https://nutzam.com/core/nutz_preface.html

QQ交流群: 68428921

ps:这几年明显感受到国产开源项目越来越多,各种五花八门的框架,让使用者很难选择;不鼓吹自己的框架多么多么好,个人觉得适用于项目需要并且能在满足技术需求的基础上最大限度的提高开发效率的框架,就是好框架。

版本说明

NutzWk v4.x 模块化版本(统一提供代码生成器及IDEA可视化插件)
NutzWk v3.x 单应用版本(CMS+微信+系统+权限+常用功能封装 beetl/velocity)
NutzWk v2.0 试验版(不建议使用)
NutzWk v1.0 传统版(velocity 支持IE6)

如果您的项目面对的客户比较念旧,可以选用v1.0版本,因为她使用EasyUI以及支持IE6;

如果您的项目需要快速开发,并习惯通过负载均衡方式提升性能,可以选用v3.x版本,她采用Bootstrap+JQuery+Json开发;

如果您的项目有大数据及大并发、分布式部署等需求,那么您可以选用v4.x版本,她在v3.x基础上拆分模块并接口化;

NutzWk v3.x主分支:

https://github.com/Wizzercn/NutzWk/tree/bootstrap-3.3.x 单应用快速开发, 功能与v4.x同步升级

NutzWk 4.x 使用说明:

更多请查看 README, https://github.com/Wizzercn/NutzWk

52 回复

云南人民发来贺电

问题 来了 怎么运行

@tonyyule 运行wk-web项目,详看README

这个版本里面restful api 有签名功能吗? 在调用接口的时候 添加一个sign 参数

翘首以盼

来自炫酷的 NutzCN

NutzWkV4.x 是不是jdk要求1.8+,tomcat8+????
jdk7,tomcat8行不行?

nutzwk用jdk8的东西不多,改起来不难

Connected to the target VM, address: '127.0.0.1:52786', transport: 'socket'
错误: 找不到或无法加载主类 cn.wizzer.commons.code.Generator
Disconnected from the target VM, address: '127.0.0.1:52786', transport: 'socket'
Process finished with exit code 1

wk mvc 代码生成插件,直接无法加载主类,怎么破?

请从git下载后,原封不动的调试调用成功后,再自行修改。

我也碰到一样的错误,clean、compile后再运行依然是这个错误。

Connected to the target VM, address: '127.0.0.1:7964', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:7964', transport: 'socket'
错误: 找不到或无法加载主类 cn.wizzer.commons.code.Generator

@winstars @menglinxi
临时解决办法:

        <dependency>
            <groupId>cn.wizzer</groupId>
            <artifactId>wk-code-generator</artifactId>
            <version>4.0.1-SNAPSHOT</version>
        </dependency>

这段加到 wk-parent/pom.xml 里,这样可以使用代码生成器,但mvn install 编译的时候会提示pom.xml错误,编译项目的时候再删掉..

主要是IDEA插件的运行环境里没有找到代码生成器的jar包,如果不用上面的方法,可以手动配置系统环境变量,把jar包加进去,

我再折腾折腾看怎么解决这个矛盾……

后台设置的值 如果没有接收到 就报错 怎么解决呢

lnglat = new Object(${lnglat});
var lnglat = '${lnglat}';
if (lnglat) {}
request.setAttribute("lnglat", lnglat);  

@tonyyule "如果没有接收到"是什么意思

我自己发布的评论哪里能删除呢?

@qq_d2708d7f 不提供删除功能

nutzwk怎么通过maven构建项目,有教程吗?

nutzwk本身就是maven项目啊

@wendal 下载的nutzwk,eclipse导入不识别是咋回事?

@wendal nutzwk4.x没看到wk-dubbo相关代码呀

@253230110 问了一下大鲨鱼,说还没做完

@Wizzercn 我下载安装运行后出现如下错误?新手不知哪儿出错了:
[DEBUG] 2017-06-01 20:42:11,639 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) - Found IocObject(cacheManager) in JsonLoader(paths=[config/ioc/])
[DEBUG] 2017-06-01 20:42:11,639 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) - >> Make...'cacheManager'<>
[DEBUG] 2017-06-01 20:42:11,640 cn.wizzer.app.web.commons.plugin.PluginAopConfigure.getInterceptorPairList(PluginAopConfigure.java:33) - skip -- net.sf.ehcache.CacheManager
[DEBUG] 2017-06-01 20:42:11,647 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) - Load class net.sf.ehcache.CacheManager without AOP
[DEBUG] 2017-06-01 20:42:11,647 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) - Save object 'cacheManager' to [app] [DEBUG] 2017-06-01 20:42:11,897 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) - // NOT SQL // ElFieldMacro=uuid()
[DEBUG] 2017-06-01 20:42:11,899 org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:110) - Exception when parser SQL sql, skip cache detect!! SQL=RUN
[DEBUG] 2017-06-01 20:42:11,909 org.nutz.resource.Scans.scan(Scans.java:274) - Found 1 resource by src( org/nutz/conf/NutzDefaultConfig.js ) , regex( .(js|json)$ )
[DEBUG] 2017-06-01 20:42:11,981 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) - // NOT SQL // ElFieldMacro=$me.uid()
[DEBUG] 2017-06-01 20:42:11,981 org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:110) - Exception when parser SQL sql, skip cache detect!! SQL=RUN
[DEBUG] 2017-06-01 20:42:11,988 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) - // NOT SQL // ElFieldMacro=$me.now()
[DEBUG] 2017-06-01 20:42:11,989 org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:110) - Exception when parser SQL sql, skip cache detect!! SQL=RUN
[DEBUG] 2017-06-01 20:42:11,989 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) - // NOT SQL // ElFieldMacro=$me.flag()
[DEBUG] 2017-06-01 20:42:11,989 org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:110) - Exception when parser SQL sql, skip cache detect!! SQL=RUN
[DEBUG] 2017-06-01 20:42:11,991 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) - INSERT INTO sys_user(id,loginname,password,salt,username,isOnline,disabled,email,loginAt,loginIp,loginCount,customMenu,loginTheme,loginSidebar,loginBoxed,loginScroll,loginPjax,unitid,opBy,opAt,delFlag) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
|----------------------------------|------|----------------------------------------------|--------------------------|------|-------|-------|---------------|---|-----------|---|------|-------------|-------|-------|-------|------|--|--|------------|-------|
| cbbb3c6311db4512b73d1276f1cba894 | test | XpJ00oqsqBwCkp+gr0W8225dnJbsRJsE4C0UIMGpvDQ= | JHBnam8oFFINGrZnGgWULg== | 测试帐号 | false | false | wizzer@qq.com | 0 | 127.0.0.1 | 0 | NULL | palette.css | false | false | false | true | | | 1496320931 | false |
For example:> "INSERT INTO sys_user(id,loginname,password,salt,username,isOnline,disabled,email,loginAt,loginIp,loginCount,customMenu,loginTheme,loginSidebar,loginBoxed,loginScroll,loginPjax,unitid,opBy,opAt,delFlag) VALUES('cbbb3c6311db4512b73d1276f1cba894','test','XpJ00oqsqBwCkp+gr0W8225dnJbsRJsE4C0UIMGpvDQ=','JHBnam8oFFINGrZnGgWULg==','测试帐号',false,false,'wizzer@qq.com',0,'127.0.0.1',0,'NULL','palette.css',false,false,false,true,'','',1496320931,false) "
[DEBUG] 2017-06-01 20:42:12,034 org.nutz.dao.impl.sql.run.NutDaoExecutor.exec(NutDaoExecutor.java:97) - SQLException
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'shuxin.sys_user' doesn't exist
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2501)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2931)
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2929)
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:131)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:493)
at org.nutz.dao.impl.sql.run.NutDaoExecutor._runPreparedStatement(NutDaoExecutor.java:308)
at org.nutz.dao.impl.sql.run.NutDaoExecutor.exec(NutDaoExecutor.java:90)
at org.nutz.plugins.cache.dao.CachedNutDaoExecutor._exec(CachedNutDaoExecutor.java:317)
at org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:187)
at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:66)
at org.nutz.dao.impl.interceptor.DaoLogInterceptor.filter(DaoLogInterceptor.java:22)
at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:64)
at org.nutz.dao.DaoInterceptorChain.invoke(DaoInterceptorChain.java:139)
at org.nutz.dao.impl.sql.run.NutDaoRunner.runCallback(NutDaoRunner.java:158)
at org.nutz.dao.impl.sql.run.NutDaoRunner._runWithTransaction(NutDaoRunner.java:104)
at org.nutz.dao.impl.sql.run.NutDaoRunner._run(NutDaoRunner.java:88)
at org.nutz.dao.impl.sql.run.NutDaoRunner$1.run(NutDaoRunner.java:74)
at org.nutz.trans.Trans.exec(Trans.java:174)
at org.nutz.dao.impl.sql.run.NutDaoRunner.run(NutDaoRunner.java:72)
at org.nutz.dao.impl.DaoSupport.run(DaoSupport.java:245)
at org.nutz.dao.impl.DaoSupport._exec(DaoSupport.java:257)
at org.nutz.dao.impl.EntityOperator.exec(EntityOperator.java:55)
at org.nutz.dao.impl.NutDao.insert(NutDao.java:148)
at cn.wizzer.test.SysUserTest.testInsert(SysUserTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

感觉初始化没有执行!

@sunhai1988 单独发帖,把日志贴全

        cn.wizzer.app.web.commons.core.Setup类
 Globals.AppBase = Strings.sNull(config.getServletContext().getContextPath());//部署名
cn.wizzer.app.web.commons.filter.RouteFilter类
res2.setCharacterEncoding("utf-8");
       

这两处编译错误

下载之后maven怎么一直构建不完呢。

这个项目可以用eclipse打开么

nutzwk 4.0 有没有会员模块呢?

最近在使用NutzWk 4.x框架,看到描述里有 Dobbo的支持,为啥在代码里找不到捏?
NutzWk 4.x 新特性:模块化可自由拆分(Dubbo/RSF自由选择) 看到说明里有这样的描述,但是代码里是淡淡的忧伤!

新人求教,idea打开后无论是用jetty或tomcat,运行后跳转到sysadmin直接报404错误,并且没有显示任何错误log。谢谢

打开 /platform/login 试试

启动不起来怎么解决

@Wizzercn
系统为何没直接用nutz的SLog插件,而自己处理呢?

@qq_a930202f 因为自己想怎么定义就怎么定制,有需要还可以改成monogdb等

@Wizzercn
https://nutzwk.wizzer.cn/private/sys/log 对应的是哪个分支的代码?

杠杠的,2018头炮!

cn.wizzer.app.web.modules.controllers.platform.sys.SysTaskController.disable(SysTaskController.java:215) - org.quartz.JobPersistenceException: Couldn't obtain triggers for job: Cannot convert the column of type BYTEA to requested type long. [See nested exception: org.postgresql.util.PSQLException: Cannot convert the column of type BYTEA to requested type long.]
这个错误是什么情况?我用的是postgresql,脚本也是从官方下的,只是把表名改了一下,跟mysql的表名保持一致。其它的没有任何的发动。

这是新闻帖。

。。。。。。几个意思?我真的不知道这个是什么情况,我只想知道怎么解决一下。

发新帖,贴完整报错信息

@qq_d2708d7f 呵呵哒

来自炫酷的 NutzCN

添加回复
请先登陆
回到顶部