发生IllegalArgumentException:加载时需要加载id吗?

时间:2015-05-23 17:39:58

标签: java playframework illegalargumentexception

当我尝试访问findById时,它显示以下内容:

IllegalArgumentException "id to load is required for loading"

这是我的代码:

package controllers;
import play.*;
import play.mvc.*;
import java.util.*;
import models.*;

public class Application extends Controller {

    public static void index() {

       render();
    }
    public static void saveUser(String name)
    {
        User1 user =new User1(name);
        String res = "";
        if( user.save()!=null){
            res="Stored Successfully";
        }
        else{
            res="Failed to store";
        }
        render(res);
    }
    public static void showUser(Long id)
    {
       User1 user=  User1.findById(id);
       render(user);
    }

}

以下是我的路线文件我不明白为什么错误即将发生以及非法参数异常。     #Routes     #此文件定义所有应用程序路由(优先级较高的路由优先)     #~~~~

# Home page
GET     /                                       Application.index

# Ignore favicon requests
GET     /favicon.ico                            404

# Map static resources from the /app/public folder to the /public path
GET     /public/                                staticDir:public

# Catch all
*       /{controller}/{action}                  {controller}.{action}

2 个答案:

答案 0 :(得分:2)

抛出

IllegalArgumentException因为id为null。确保您通过请求传递正确的值。如下映射routes文件中的控制器方法将阻止传递null:

GET /user/{id} Aplication.showUser

答案 1 :(得分:0)

您传递给id的{​​{1}}变量的值是不可接受的。

也许这是一个负数。阅读User1.findById的文档,以查找User1.findById变量的要求。

在调用id之前,请尝试使用此代码检查id的值:

findById(id)