【问题标题】:spring mvc - error null pointer exceptionspring mvc - 错误空指针异常
【发布时间】:2017-10-28 09:29:25
【问题描述】:

我尝试将数据插入数据库,但出现内部服务器错误java.lang.NullPointerException

我创建了自己的 Spring MVC,可能它与其他的不同

我认为错误的发生是因为模型没有从正文中获取数据,因此在调用保存方法时发生空指针异常错误

这里是代码

控制器

@RestController
public class SellerController {

@Autowired
SellerService service;

@RequestMapping(method = RequestMethod.POST, path = "sellers/register",
            consumes = "application/json", produces = "application/json")
public ResponsePost postSellerRegister(@RequestBody SellerPost model){

    ResponsePost response = new ResponsePost();
    model.getSlrNim();
    model.getStdId();
    model.getSlrName();
    model.getSlrPass();
    model.getSlrEmail();
    model.getSlrContact();
    model.getSlrGender();
    try{
            service.connectToDatabase();
            Result<Integer> result = service.save(model);
            response.setStatus(result.getStatus());
            response.setId(result.getModel());
            service.closeConnection();
    }catch(SQLException e) {
            response.setStatus(StateCons.SQL_EXCEPTION);
    }
    return response;
  }
}

服务

@Service
public class SellerService extends BaseService implements BaseDao<SellerPost, SellerGet, SellerGet> {

public SellerService(){

}

@Override
public Result<Integer> save(SellerPost model){

    Result<Integer> result = new Result();
    if(getDatabase().getResult() == StateCons.SUCCESS){
            try{
                           String sql = "INSERT INTO seller (slr_nim, slr_name, std_id, slr_gender, slr_email, slr_contact, slr_pass) VALUES ('"+ model.getSlrNim() +"', '"+ model.getSlrName() + "', '"+ model.getStdId() +"', "+ model.getSlrGender() +", '"+ model.getSlrEmail() +"', '" + model.getSlrContact() +"', '"+ model.getSlrPass() +"')";
                            setResultSet(getDatabase().executeQuery(sql));
                            if(getResultSet().next()) {
                                    result.setModel(new Integer(getResultSet().getInt("slr_nim")));
                                    result.setStatus(StateCons.SUCCESS);
                            }else{
                                    result.setStatus(StateCons.FAILED);
                            }
                    getResultSet().close();
            }catch(SQLException e) {
                    result.setStatus(StateCons.NO_RECORD);
            }
    }else{
            result.setStatus(StateCons.FAILED);
    }
    return result;
 }
}

DAO

package id.ceban.dao;

import java.util.List;
import id.ceban.model.Result;

public interface BaseDao<P, G, GD> {

public Result<Integer> save(P model);

public Result<Boolean> delete(int modelId);

public Result<Boolean> update(P model, int modelId);

public Result<GD> get(int modelId);

public Result<List<G> > getList(String search_query, String field, String sort, int page, int limit);

public Result<Integer> count(int modelId);

}

错误

【问题讨论】:

  • 也许你应该添加错误信息。
  • @ChristianFrommeyer,即使他一直在显示错误,我很确定这个问题最终会要求其他人调试他的代码,显然他并没有表现出他的一些努力。

标签: java spring spring-mvc


【解决方案1】:

在控制器中,您不应获得SellerService 的新实例,而应使用@Autowired。你可以尝试替换这个:

SellerService service = new SellerService();

为此:

@Autowired
SellerService service;

并且SellerService类应该在类定义之前有@Service注解:

@Service
public class SellerService extends BaseService implements BaseDao<SellerPost, SellerGet, SellerGet> {
//...
}

【讨论】:

  • 你能发布新的堆栈跟踪吗?
  • 我已经改变了它。错误在同一行。错误是 result.getModel() 为空
猜你喜欢
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
相关资源
最近更新 更多