2022-08-08 18:24

@JFinal 好的,非常感谢。第三个就是Model + (Db + Record)的混合体,不需要做绑定,但同时又用上了Model的getter/setter的便利,而不是大量字符串常量。

2020-09-13 15:58

Undertow官方建议用ServletExtension,而不是ServletContainerInitializer

2020-09-13 15:56

UndertowServer.create(AppConfig.class, "undertow.txt")
.onDeploy((x,y)-> {
y.addServletContainerInitializer(new ServletContainerInitializerInfo(SpringServletContainerInitializer.class, null));
}.start();

2020-09-13 14:39

正常情况下这个数据源的设置方法是没问题的,请确保你的afterJfinalStart里面的那些初始化代码被调用了.另外,这个备份数据源为啥不将初始化放在configPlugin里呢?看到文档没说的太明白的时候,翻翻源码,比文档靠谱.

2020-09-13 12:53

2020-09-11 18:59:43 [Thread: XNIO-1 task-1]-[WARN]-[com.jfinal.core.ActionHandler.handle()]: 404 Action Not Found:
这句表名你的target都是空的,当然找不到对应的controller去处理,所以还是看看你的配置和代码吧,仅仅这样的信息是没人可以解决问题的.

2020-08-01 18:19

建议继承ParaGetter去处理各种入参的转换后再注入就行了.ParaGetter需要注册后使用ParaProcessorBuilder.me.regist(需要转换成的类.class, MyParaGetter.class, null);

2020-08-01 18:17

@Ghai、海 这个太复杂,还是前面 @JFinal 说的继承ParaGetter比较合理,并且也比较简单.

2020-03-27 10:13

BasePageRequest<List<SomeOtherDomain>>
BasePageRequest<SomeListParam>
public class SomeListParam{
List<SomeOtherDomain> list;
}

2020-03-27 10:06

@无翼 PageParaGetter存在扩展性的小问题(你的项目没用到,所以其实目前为止肯定是没问题的),如果controller的入参声明为BasePageRequest>这种TypedParameter比较复杂的时候,会出问题,要么can not cast to JSONObject,要么expect '[', but {, 所以如果使用这个PageParaGetter来接收List,要将它放到一个对象里面包装一下,如BasePageRequest, 然后public class SomeListParam{List list;},或者修改PageParaGetter进行支持.另一个小问题是结构被改变了,入参的结构与接收的BasePageRequest结构不一致,与项目新人交接的时候可能需要解释一下.

2020-03-27 09:59

@无翼 @JFinal 翻了一下JFinal的源码,参照ParaProcessorBuilder的createParaGetter方法可知 @无翼 的这个方案是可靠的,ParaProcessorBuilder的createParaGetter方法优先取对应class的Getter然后再取内置getter,不过从这里也看出需要提前注册自定义的Getter到ParaProcessorBuilder,即ParaProcessorBuilder.me.regist,只有注册了的类可以正确转换,接近完美了,只差在有子类的情况下如果只注册父类是不够的,需要每一个具体的类都注册一下,在项目的Config入口注册就行了.如果改造BeanGetter/ModelGetter则不需要注册,但改造BeanGetter/ModelGetter会相对麻烦些.非常感谢.

2020-03-15 18:44

@JFinal 实测还是有影响的:
@Override
public void tryGeneric(Class clz) {
}
这样写会提示未实现父类方法,必须要一致一签名才算覆盖.一个不那么漂亮但可行的方案是为Bean/ModelGetter添加字段,为controller添加Type入参的方法,在ParaProcessorBuilder通过setter将parameterized的字段设值,然后在controller的getBean/getModel方法调用新加的支持泛型的方法.