开发者社区> 问答> 正文

jfire-codejson 输出jfinal model报错? 400 报错

jfire-codejson 输出jfinal model报错? 400 报错

@eric_jfire 你好,想跟你请教个问题:

最近看到您新出的codejson框架, 性能目前果然是傲视群雄呀。。 准备在项目中应用,但是出现了一些问题!我的项目是采用jfinal, 在用codejson输出jfinal model时出错!

java.lang.IllegalAccessError: tried to access class java.util.HashMap$Node from class JsonWriter_Node_37709549281918
	at JsonWriter_Node_37709549281918.write(JsonWriter_Node_37709549281918.java)
	at link.jfire.codejson.function.WriterContext.write(WriterContext.java:103)
	at JsonWriter_PiracyInfo_37709515503292.write(JsonWriter_PiracyInfo_37709515503292.java)
	at link.jfire.codejson.function.WriterContext.write(WriterContext.java:103)
	at link.jfire.codejson.function.impl.write.extra.ArrayListWriter.write(ArrayListWriter.java:28)
	at link.jfire.codejson.function.WriterContext.write(WriterContext.java:103)
	at link.jfire.codejson.JsonTool.write(JsonTool.java:28)



没有权限访问model 里的attrs属性?
public abstract class Model<M extends Model> implements Serializable {
	
	private static final long serialVersionUID = -990334519496260591L;
	
	/**
	 * Attributes of this model
	 */
	private Map<String, Object> attrs = getAttrsMap();	// getConfig().containerFactory.getAttrsMap();	// new HashMap<String, Object>();
	
	private Map<String, Object> getAttrsMap() {
		Config config = getConfig();
		if (config == null)
			return DbKit.brokenConfig.containerFactory.getAttrsMap();
		return config.containerFactory.getAttrsMap();
	}



@ModelSign
public class PiracyInfo extends BaseModel<PiracyInfo> {

    public static PiracyInfo dao = new PiracyInfo();
    
}



请问这个有办法解决吗? 谢谢!

展开
收起
爱吃鱼的程序员 2020-06-05 13:03:35 328 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    能不能贴出更完善一些的代码?

    codejson输出采用的是属性的get方法。也就是说要输出的属性至少要有一个无参的get方法才能输出。但是我在你的代码中似乎没有看到?

    ######回复 @三千水军保档 : 可能我没看的太明白。是不是这个类中还有其他的属性。那这样的话,在输出策略中,使用writeStratege.addIgnoreField("com.XX.fieldName")这样的方式可以忽略指定的属性即可。注意该属性是标准get方法中抽离出来的。######回复 @eric_jfire : 嗯嗯, 好的, 谢谢呀! 如果说我这里只想输出Model 里面的attrs 这个集合!codejson策略方式能实现吗?######回复 @三千水军保档 : 是的。codejson输出采用的符合JavaBean规范的get方法。也即是说,第一无参,第二访问类型为public。如果是protected按理来说是直接忽略的,可能是我的bug。我回头再检查下。######感谢您的回答! 请看楼下代码! Jfinal 将查询结果集封装到一个Map集合里面, 但是只提供了一个protected 的get方法供子类使用,所以codeJson没权限访问Map! 不知道我理解的对不对?######
    PiracyInfo:
    public class PiracyInfo extends BaseModel<PiracyInfo> {
        public static PiracyInfo dao = new PiracyInfo();
    }

    BaseModel:


    public abstract class BaseModel<M extends Model> extends Model<M> {
    
    }



    Model:



    private Map<String, Object> attrs = getAttrsMap();
    
    protected Map<String, Object> getAttrs() {
    	return attrs;
    }

    PiracyInfoServiceImpl:


    public String getAllPiracyInfo(){
            List<PiracyInfo> list = PiracyInfo.dao.find("select rtrim(JMGN_Code) jmgCode, rtrim(fileSuffix) fileSuffix from PiracyInfo");
            return JsonTool.write(list);
        }








    2020-06-05 13:03:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载