@Before(PayValidator.class) 校验

@Before(PayValidator.class)
public void toPay(){
    //代码体
}
问题:在添加@Before(PayValidator.class)时 条件为真是可以弹出提示  条件为假不走@Before的校验可是toPay方法就进不去  把
的注解去掉测试就可以进去  有大佬知道的么?
控制台报错信息:
 /pay/toPay
com.jfinal.plugin.activerecord.ActiveRecordException: Only ONE COLUMN can be queried.


评论区

JFinal

2020-05-30 16:27

注意异常信息:ActiveRecordException: Only ONE COLUMN can be queried.

问题出在你的查询代码,我估计你是用的 Db.queryXxx(....) 样的方法,但凡是 queryXxx , 只允许 select 中出现一个字段,例如:
Db.queryInt("select nickName from account where id = ?", 123);

不能是 select * 也不能是 select a, b....

liming_code

2020-05-30 17:06

@JFinal 一个参数可以 又出现如下的问题 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 我将传入的String 转化成BigIntrger BigInteger m=new BigInteger(mobile); 依然有错

JFinal

2020-05-30 17:26

@liming_code 至始至终你都没贴出来出问题代码是什么

类型转换异常是最好处理的,例如 queryInt 改成 queryString 不就完事了?

liming_code

2020-05-30 19:48

@JFinal 好滴好滴 改成您说的可以 现在进入方法后重定向到第三方url存在跨域问题 方法代码如下:
@Before(PayValidator.class)
public void toPay(){
getResponse().addHeader("Access-Control-Allow-Origin", "*");
System.out.println("进入toPayy!!");
//记得更改 http://codepay.fateqq.com 后台可设置

System.out.println("codepay_id...."+codepay_id);
String price=getPara("price");
System.out.println("price...."+price);
String type=getPara("type");
System.out.println("token...."+token);
String pay_id=getPara("pay_id");
String param=getPara("param");
String mobile=getPara("mobile");
//异步通知地址
String notify_url="/_view/pay/notifySucess.html";
String return_url="";
if(price==null){
price="1";
}
//参数有中文则需要URL编码
String url="https://api.xiuxiu888.com/creat_order?id="+codepay_id+"&pay_id="+pay_id+"&price="+price+"&type="+type+"&token="+token+"&param="+param+"&notify_url="+notify_url+"&return_url="+return_url;
redirect(url);