NutzCN Logo
精华 MVC参数获取不到, 必须使用@Param
发布于 2883天前 作者 qq_7c6192dd 4875 次浏览 复制 上一个帖子 下一个帖子
标签: mvc ecj
有如下的接口:
@Ok("json")
@At("/check/phone")
@POST
public NutMap checkPhone(String phone, HttpServletRequest request, HttpServletResponse response) {
    // 这里的phone在开发的时候,也就是进行eclipse, tomcat运行项目时
    // 这个phone能获取到
    // 但是当放到单独的tomcat时. 或者使用eclipse tomcat server 进行添加外部的web项目时都为空
    // 所以出现了,开发完全没问题. 但是部署后就出现了问题
    System.out.println("phone::" + phone); 
    ...
}
使用下面的方式没有问题, 加入了@Param("phone") , 请问为什么?
@Ok("json")
@At("/check/phone")
@POST
public NutMap checkPhone(@Param("phone") String phone, HttpServletRequest request, HttpServletResponse response) {
    System.out.println("phone::" + phone);  // 这样能获取到
    ...
}
10 回复

目测是maven编译的吧? 或者是ant?

因为eclipse用的是ecj编译,带顺序相关的方法变量名,而javac不带

可以这样: 用JDK8编译,然后带编译参数-paramters . 可以参考论坛源码的pom.xml

@wendal 是的, 用maven编译打包的.

同样遇到这个问题。我用maven编译。pom.xml如下,但是参数还是注入不了。

<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<target>1.8</target>
					<source>1.8</source>
					<encoding>UTF-8</encoding>
					<encoding>UTF-8</encoding>
					<compilerArgs>
						<arg>-parameters</arg>
					</compilerArgs>
					<useIncrementalCompilation>false</useIncrementalCompilation>
				</configuration>
			</plugin>

@xwqiang nutz版本多少??

接手的项目,用的是nutz-last.jar 我的maven配置也用的scope:system
解压后mainfest文件如下

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.3
Created-By: 1.7.0_55-b13 (Oracle Corporation)

问题已经解决。
1: 换最新的nutz.jar。
2:pom.xml中增加compile参数。

我也遇到相同的问题,按照你的方法发现小写的long参数可以取到,大写的Long取不到。

不是maven项目怎么搞呢?我也遇到这样的问题。

ant编译?

最好的办法就是用jdk8

ant的javac也是可以指定ecj的

添加回复
请先登陆
回到顶部