权限菜单就采用递归的方式,后续再优化。
通过页面来分析,页面如下:
利用dtree的话我数据表就这样设计:
CREATE TABLE `privilege` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`url` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`code` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=327 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
直接拿全部记录出来,效果如下:
直接增加下一级菜单有点让人不明白,所以改了下:
想学习oracle于是把ibatis底部配置更改为oracle的配置,改了之后出现了一下问题:
信息:
SELECT
ID ,NAME
FROM
USERS limit 10
2013-2-18 15:31:23 net.sf.log4jdbc.Slf4jSpyLogDelegator exceptionOccured
严重: 4. PreparedStatement.execute() SELECT ID ,NAME FROM USERS limit 10
java.sql.SQLException: ORA-00933: SQL 命令未正确结束
查看sql,这事mysql的配置为何会到oracle中去了呢?
跟踪排错中....
原因找到了因为我使用使用了rapid-framework,里面有spring的相关配置如下:
<!-- rapid SqlMapClientFactoryBean与spring SqlMapClientFactoryBean的区别是可以指定sqlExecutor --> <bean id="sqlMapClient" class="cn.org.rapid_framework.ibatis.spring.SqlMapClientFactoryBean"> <property name="configLocation"> <value>classpath:sql-map-config.xml</value> </property> <property name="mappingLocations"> <value>classpath*:/com/**/model/**/*SqlMap.xml</value> </property> <property name="dataSource" ref="dataSource"/> <!-- 指定数据库分页方言Dialect, 其它方言:OracleDialect,SQLServerDialect,SybaseDialect,DB2Dialect,PostgreSQLDialect,MySQLDialect,DerbyDialect,HSQLDialect--> <property name="sqlExecutor"> <bean class="cn.org.rapid_framework.ibatis.sqlmap.engine.execution.LimitSqlExecutor"> <property name="dialect"> <bean class="cn.org.rapid_framework.jdbc.dialect.MySQLDialect"/> </property> </bean> </property> </bean>
关于树形菜单的选中,如果父节点选中子节点都需要选中,这个功能我不使用递归来做,因为我不会,换种思路来做,首先如果用户点击父节点
这个我是用js(jquery)来实现的:
function selectCheckbox(obj){ var check = $(obj).attr("checked"); $(obj).parent(".dTreeNode").next().find("input[type='checkbox']").each(function(index,ele){ $(ele).attr("checked",check); }); }
那么如果首先选择的是子节点呢?
先这种的话我决定在数据库中去存储一个字段,用来表示节点的上下关系,比如:$1$3$10$100
这样的话100这个节点的父节点都会被选中了。
后面想了下这个还是js实现好点和逻辑混用了,网上搜索了下ztree很强大,有空就研究下提高下js功力。
演示地址:
http://www.ztree.me/v3/demo.php#_208
通过ztree的官方demo实现如下: