首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Spring mvc 初级有关问题

2013-03-21 
Spring mvc 初级问题刚学spring mvc ,想实现一个提交表单并保存到数据表的功能,JSP代码form methodPOST

Spring mvc 初级问题
刚学spring mvc ,想实现一个提交表单并保存到数据表的功能,
JSP代码


<form method="POST" action="padd.html" >  
权限ID: <input id="aid" type="text" name="aid" />   
权限名称: <input id="aname" type="text" name="aname" />   
   <input type="submit" value="Submit" />  
</form>  


Controller 代码

/**
 * 
 */
package org.clas.controller;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.clas.model.Tpermission;
import org.clas.service.TpermissionService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author jiangenbo
 *
 * 转移转化平台权限控制管理
 */

@Controller
public class AuthorityController {

/**
 * @author jiangenbo
 *
 * 添加权限信息
 */

private TpermissionService tpermissionService;
private Tpermission tpermission;

@RequestMapping("/padd") 
public void PermissionAdd(HttpServletRequest request, HttpServletResponse response){
String authid = request.getParameter("aid");
String auname = request.getParameter("aname");
System.out.println("aid==" + authid);
System.out.println("aname==" + auname);
tpermission.setAuthid(authid);
tpermission.setAuthname(auname);
tpermissionService.save(this.getTpermission());
//return 1;
}

public TpermissionService getTpermissionService() {
return tpermissionService;
}

public void setTpermissionService(TpermissionService tpermissionService) {
this.tpermissionService = tpermissionService;
}

public Tpermission getTpermission() {
return tpermission;
}

public void setTpermission(Tpermission tpermission) {
this.tpermission = tpermission;
}

}



可以执行到system.out.println,也就是说可以接收到前端传来的数据,再往后执行就错了,下面是错误信息:
2013-3-18 17:44:52 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet dispatcher threw exception
java.lang.NullPointerException
at org.clas.controller.AuthorityController.PermissionAdd(AuthorityController.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.clas.util.EncodingDispatcherServlet.doService(EncodingDispatcherServlet.java:25)


at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
。。。。。。
不知道什么意思,为什么没有指针。Modle都定义了set get方法,求教!
[解决办法]
页面改为
<form method="POST" action="padd.html" >  
权限ID: <input id="aid" type="text" name="tpermission.aid" />   
权限名称: <input id="aname" type="text" name="tpermission.aname" />   
   <input type="submit" value="Submit" />  
</form>  

直接这样就行了。
 public void PermissionAdd(HttpServletRequest request, HttpServletResponse response){
        tpermissionService.save(this.getTpermission());
        //return 1;
    }
[解决办法]
没有注入tpermission和tpermissionService 报空指针了
[解决办法]
tpermission和tpermissionService 没注入调用的时候肯定是报空指针异常呀
把这两个参数注入进去就可以了  前台页面和参数都不用该
[解决办法]

引用:
这算注入了吗
import org.clas.model.Tpermission; 
import org.clas.service.TpermissionService

private TpermissionService tpermissionService;         
private Tpermission tpermission; 

另外……

这只是表明AuthorityController类含有两个成员变量,不代表它们必须随主对象(enclosing object)初始化而初始化

也就是说当PermissionAdd方法被调用时,AuthorityController类是初始化了,但是其属性未必初始化(这里发生空指针异常表明未初始化,也就是未注入),因为它们不是constructor注入方式,而是setter注入方式,具体要看spring的配置了

 
[解决办法]
    private TpermissionService tpermissionService;    
    private Tpermission tpermission;

你先改成    private TpermissionService tpermissionService = new TpermissionService();    
    private Tpermission tpermission = new Tpermission(); 
这样你就不会报错了,但是这样写就失去了使用Sring框架的意义了   你可以再配置文件上注入一下。

热点排行