有了如何在插件中对数据表进行CRUD 的基础,我们这次来开发下拉选项值绑定插件.
需求
什么时候我们需要开发一个自定义的插件呢?
比如,下拉选项默认的绑定器无法满足你,你想要自己开发一个符合自己的业务模式.
在社区版,没有jdbc绑定器,你想要下拉选项值通过写 SQL 来返回.
如何去做?
1.找到这种类型插件的官方API文档
我们这里需要 https://dev.joget.org/community/pages/viewpage.action?pageId=26117033
https://dev.joget.org/community/display/KBv6/How+to+develop+a+JDBC+Options+Binder
作为参考.
2.实现文中所述的抽象类和接口
3.抽象配置项
为什么我们需要配置项?
- 插件要灵活,需求sql不可能是固定的,肯定是变化的
- 要不要使用表单上的字段作为参数传到SQL里面?
- 要不要使用默认数据源,能不能访问其他的数据库获取数据?
4.打包测试
- 打包前需要添加依赖
- 确保插件国际化
<dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.3</version> </dependency>
org.joget.tutorial.JdbcOptionsBinder.pluginLabel=JDBC Binder org.joget.tutorial.JdbcOptionsBinder.pluginDesc=Used to load field's options using JDBC form.jdbcOptionsBinder.config=Configure JDBC Binder form.jdbcOptionsBinder.datasource=Datasource form.jdbcOptionsBinder.customDatasource=Custom Datasource form.jdbcOptionsBinder.defaultDatasource=Default Datasource form.jdbcOptionsBinder.driver=Custom JDBC Driver form.jdbcOptionsBinder.driver.desc=Eg. com.mysql.jdbc.Driver (MySQL), oracle.jdbc.driver.OracleDriver (Oracle), com.microsoft.sqlserver.jdbc.SQLServerDriver (Microsoft SQL Server) form.jdbcOptionsBinder.url=Custom JDBC URL form.jdbcOptionsBinder.username=Custom JDBC Username form.jdbcOptionsBinder.password=Custom JDBC Password form.jdbcOptionsBinder.useAjax=Use AJAX for cascade options? form.jdbcOptionsBinder.addEmpty=Add Empty Option? form.jdbcOptionsBinder.emptyLabel=Empty Option Label form.jdbcOptionsBinder.sql=SQL SELECT Query form.jdbcOptionsBinder.sql.desc=Use question mark (?) in your query to represent dependency values when using AJAX form.jdbcOptionsBinder.testConnection=Test Connection form.jdbcOptionsBinder.connectionOk=Database connected form.jdbcOptionsBinder.connectionFail=Not able to establish connection.