sql文件中静态变量提取

在sql文件中这样写

#namespace(com.gmrz.uap.common.DbConst::TABLE_USER)

调用类中的静态变量,但是这样写会报错:

2017-05-03 16:36:04 [RMI TCP Connection(2)-127.0.0.1] ERROR Config:115 - Plugin start error: com.jfinal.plugin.activerecord.ActiveRecordPlugin. 

the parameter of #namespace directive must be String

Template: "/user.sql". Line: 1

com.jfinal.template.stat.ParseException: the parameter of #namespace directive must be String



怎样写才能返回String类型?


评论区

JFinal

2017-05-03 18:21

#namespace 指令目前只支持 String 常量

edgar

2017-05-03 18:24

我类中定义了String常量,但是取的时候会报错,the parameter of #namespace directive must be String

JFinal

2017-05-03 21:55

@edgar "abc" 这种常量

JFinal

2017-05-04 09:30

jfinal sql 管理中的 #namespace,就跟 C# 语言中的 namespace 关键字,或者跟 java 语言中的 package abc.def 类似,只支持直接 String 常量指令,不支持去引用另一个变量

com.gmrz.uap.common.DbConst::TABLE_USER 这个与 "abc" 仍然有区别,前者仍需对“变量”求值

edgar

2017-05-04 09:40

@JFinal 明白了,多谢

JFinal

2017-05-04 09:42

@edgar 主要是因为这个 namespace 值的获取发生成模板解析阶段,所以不太方便去弄成动态的,技术上是可以做到的

edgar

2017-05-04 09:47

@JFinal 页面中可以这么调用,我就理解成在这个部分也可以这么做,主要还是想在sql文件里的命名和类中调用的是同一个位置的值

JFinal

2017-05-04 09:55

@edgar sql 管理功能的 #sql #namespace 是“定义”的语义,定义通常都是这种规则,例如 java 中定义一个方法:
public void method()

上面的这个 method 不能再去引用一个变量:
public void com.abc.Const::METHOD_NAME()

edgar

2017-05-04 10:11

热门反馈

扫码入社