3.3 Action带参
从 JFinal 3.2 版本开始,其 jfinal-java8 编译版本已支持Action携带形参,不使用此特性的可以跳过本小节。以下是代码示例:
- public class ProjectController extends Controller {
- public void index(Project project) {
- project.save();
- render("index.html");
- }
- }
Action带参可以代替getPara、getBean、getModel系列方法获取参数,使用UploadFile参数时可以代替getFile方法实现文件上传。这种传参方式还有一个好处是便于与swagger这类第三方无缝集成,生成API文档。
**小技巧**:如果action形参是一个model或者bean,原先通过getBean(User.class, "") 获取时第二个参数为空字符串或null,那么与之等价的形参注入只需要用一下 @Para("") 注解即可:
public void action(**@Para("")**User user) { …. }
使用带参Action需要进行两步操作,第一步需要在 java8 下使用 jfinal-java8 版本,其maven坐标如下:
- <dependency>
- <groupId>com.jfinal</groupId>
- <artifactId>jfinal-java8</artifactId>
- <version>3.4</version>
- </dependency>
第二步是在开发工具中配置打开编译参数保留住方法参数名称。注意过于老旧的eclipse版本不支持java8和该配置项,建议至少使用eclipse mars版本,以下是eclipse中的设置:
检查项目属性配置的Java Build Path菜单下的Libraries下的java版本是否为1.8:
检查项目属性配置的Project Facets菜单下的 java版本配置确定是否为1.8:
**注意:配置完成后,先将原有编译出来的class文件clear掉,并重新编译一次整个项目**
如果使用IDEA,添加一个编译参数 -parameters即可,其配置方法如下:
如果要使用maven插件进行编译,为maven-compiler-plugin编译插件配置一个<compilerArgument>-parameters</compilerArgument> 属性即可:
< 3.2 Action
3.4 getPara系列方法 >
原文: http://www.jfinal.com/doc/3-3