刚学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方法,求教!
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;
}
System.out.println("aname==" + auname);这些都有执行吗?异常贴全点,应该可以从异常中看到是哪行报错了
System.out.println("aname==" + auname);
看看这些有没有执行到,多加几个输出 ,空指针的话 应该是没有取到值吧 看看输出有没有值
把这两个参数注入进去就可以了 前台页面和参数都不用该
import org.clas.model.Tpermission;
import org.clas.service.TpermissionServiceprivate TpermissionService tpermissionService;
private Tpermission tpermission; 另外,System.out.println两行都执行了的,表示已经能够接收到前台的参数
错误提示还是没有指针。@Repository("tpermissionDao")
public class TpermissionDaoImpl extends GenericDAOImpl<Tpermission, String> implements TpermissionDao {
@Autowired
private SessionFactory sessionFactory;@Service("tpermissionService")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class TpermissionServiceImpl extends GenericServiceImpl<Tpermission, String> implements TpermissionService { @Autowired
private TpermissionDao tpermissionDao;
public TpermissionDao gettPermissionDao() {
return tpermissionDao;
} public void settPermissionDao(TpermissionDao tpermissionDao) {
this.tpermissionDao = tpermissionDao;
super.setGenericDao(tpermissionDao);
}
@Autowired
TpermissionService tpermissionService;
Tpermission tpermission;
@RequestMapping("/padd")
public void PermissionAdd(HttpServletRequest request, HttpServletResponse response){
private Tpermission tpermission;你先改成 private TpermissionService tpermissionService = new TpermissionService();
private Tpermission tpermission = new Tpermission();
这样你就不会报错了,但是这样写就失去了使用Sring框架的意义了 你可以再配置文件上注入一下。
@Autowired
private TpermissionService tpermissionService; @RequestMapping("/padd")
public void PermissionAdd(HttpServletRequest request, HttpServletResponse response){
Tpermission tpermission = new Tpermission();
谢谢大家了,给分,给分!