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)
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();
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
能不能贴出更完善一些的代码?
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! 不知道我理解的对不对?######public class PiracyInfo extends BaseModel<PiracyInfo> {
public static PiracyInfo dao = new PiracyInfo();
}
BaseModel:
public abstract class BaseModel<M extends Model> extends Model<M> {
}
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);
}