Bdf3

来自ling
跳转至: 导航搜索

本人也算是dorado的老用户了,无意中看到GitHub中相关内容还在更新.而且因为需要使用calendar,遍寻不到好的控件,研究了下bdf3作为新框架的基础内容.相关记录如下,避免下次再走弯路

bdf3本地编译

  • 因为http://nexus.bsdn.org/content/repositories的不稳定,所以bdf3的包需要做一些本地编译
  • bdf3-parent/pom.xml中添加以下依赖,子模块中去掉对这三个包的依赖.注意<>不能去掉,否则一样找不到依赖
		<!-- https://mvnrepository.com/artifact/org.malagu.linq/linq -->
		<dependency>
			<groupId>org.malagu.linq</groupId>
			<artifactId>linq</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.malagu.linq/spring-boot-linq -->
		<dependency>
			<groupId>org.malagu.linq</groupId>
			<artifactId>spring-boot-linq</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.malagu.multitenant/multitenant -->
		<dependency>
			<groupId>org.malagu.multitenant</groupId>
			<artifactId>multitenant</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>
  • 因为我的项目使用spring cloud的原因,而当前spring cloud对spring boot 2.x.x的支持还在snapshot阶段,所以需要降级,比如
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
	</parent>
  • 调整受影响的代码

DoradoAutoConfiguration DoradoPreloadSpringApplicationRunListener BDFPreloadSpringApplicationRunListener SecurityConfiguration bdf3-security\data.sql

  • install 相关模块到本地

新建一个只依赖dorado7的maven项目

  • 本步骤依赖上面Bdf3#bdf3本地编译原因是http://nexus.bsdn.org/content/repositories的不稳定,不一定能下载到jar包.即使设置了bsdn-maven-repository
  • 新建一个普通maven项目
  • 在pom中添加以下内容,主要是parent,bdf3-dictionary-ui,bdf3-autoconfigure这三个属性
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ling</groupId>
    <artifactId>ling-bdf3</artifactId>
    <version>1.0.0</version>

    <!-- 继承的父项目 -->
    <parent>
        <groupId>com.bstek.bdf3</groupId>
        <artifactId>bdf3-starter-parent</artifactId>
        <version>1.1.0-SNAPSHOT</version>
    </parent>

    <dependencies>
        <!-- bdf3预定义依赖,简化依赖的复杂度 -->
        <dependency>
            <groupId>com.bstek.bdf3</groupId>
            <artifactId>bdf3-dictionary-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bstek.bdf3</groupId>
            <artifactId>bdf3-autoconfigure</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bstek.dorado</groupId>
            <artifactId>dorado-calendar</artifactId>
            <version>0.7.8-SNAPSHOT</version>
        </dependency>

    </dependencies>
    <!-- bdf3项目jar存放的maven私服 -->
    <repositories>
        <repository>
            <id>bsdn-maven-repository</id>
            <url>http://nexus.bsdn.org/content/groups/public/</url>
        </repository>
    </repositories>
</project>
  • parent属性让你能找到正确的bdf3 jar包版本
  • bdf3-autoconfigure能让你的dorado能正确启动
  • bdf3-dictionary-ui是必备的模块吧.下拉框方便了很多

bdf3-dictionary-ui

  • 在后台,我们可以通过spring的依赖注入DictionaryService的实现类来使用字典。例如:
@Autowired
private DictionaryService dictionaryService;
  • 在dorado页面中

字典模块提供了一个dorado的EL表达式(不太了解dorado的EL表达式,请先去了解)上下文变量dict,通过dict,我们可以访问字典相关的服务方法。dict包含五个个方法,

  1. dict.items(code) 根据字典编码获取字典的所有字典项(包括字典项的子级字典项的树型结构)
  2. dict.defaultValue(code) 根据字典编码获取字典的默认字典项的值
  3. dict.defaultKey(code) 根据字典编码获取字典的默认字典项的键
  4. dict.defaultValueItem(code) 根据字典编码获取字典的默认字典项
  5. dict.item(code) 根据字典项的键获取字典项
  • dorado的事件里
var key = ${dict.defaultKey("xxx")};
  • 表单的下拉列表中

大部分情况,我们的业务是通过下拉列表来展现字典项。假如我配了一个性别字典,字典编码为gender,字典包含两个字典项,1.键=0,值=男;2.键=1,值=女。然后,把DataType的性别的PropertyDef的mapValues设置成${dict.items("gender")}即可。进一步,我希望性别属性的默认值为gender字典的默认字典项的键,只需要将性别的PropertyDef的defaultValue设置为${dict.defaultKey('gender')}。