[已解决]HTTP Status 404 - No result defined for action xxx and result exception问题

在做crm项目练习时,发现在添加客户的时候页面出现HTTP Status 404 - No result defined for action xxx and result exception错误,而控制台没有报任何错误信息。

    Action类

package com.tangseng.web.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.tangseng.domain.Customer;
import com.tangseng.service.CustomerService;
import com.tangseng.utils.PageBean;

public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {
	
	//接收表单传入参数
	private Customer customer = new Customer();
	private Integer currentPage;
	private Integer pageSize;
	//获得service
	private CustomerService cs;
	
	//查询分页列表
	public String list(){
		//调用service层处理分页逻辑,返回pageBean
		PageBean pb = cs.getPageBean(customer,currentPage,pageSize);
		pb.setSearchname(customer.getCust_name());
		//将pageBean封装到request域中
		ActionContext.getContext().put("pageBean", pb);
		return "list";
	}

	public String add(){
		cs.save(customer);
		return "tolist";
	}
	
	
	
	
	
	@Override
	public Customer getModel() {
		return customer;
	}
	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}
	public void setCs(CustomerService cs) {
		this.cs = cs;
	}
	public Customer getCustomer() {
		return customer;
	}
	public void setCustomer(Customer customer) {
		this.customer = customer;
	}
	public Integer getCurrentPage() {
		return currentPage;
	}
	public Integer getPageSize() {
		return pageSize;
	}
	
}

service类

package com.tangseng.service.Imp;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;

import org.apache.commons.lang3.StringUtils;
import com.tangseng.dao.CustomerDao;
import com.tangseng.domain.Customer;
import com.tangseng.service.CustomerService;
import com.tangseng.utils.PageBean;


public class CustomerServiceImp implements CustomerService {

	private CustomerDao cd;
	
	public void setCd(CustomerDao cd) {
		this.cd = cd;
	}

	@Override
	public PageBean getPageBean(Customer customer, Integer currentPage, Integer pageSize) {
		//封装离线查询对象
		DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);
		if(StringUtils.isNotBlank(customer.getCust_name())){
			dc.add(Restrictions.like("cust_name", "%"+customer.getCust_name()+"%"));
		}
		//根据条件查询总记录数
		Integer totalCount = cd.findTotalCount(dc);
		//封装pageBean对象
		PageBean pb = new PageBean(currentPage, totalCount, pageSize);
		//计算索引(在pageBean中算好)
		//根据条件查询列表
		List<Customer> customerlist = cd.findPageList(dc,pb);
		//整合pageBean返回
		pb.setList(customerlist);
		return pb;
	}

	@Override
	public void save(Customer customer) {
		System.out.println(customer.toString());
		cd.saveorupdate(customer);
	}

}

BaseDao类

package com.tangseng.dao.Imp;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.tangseng.dao.BaseDao;
import com.tangseng.utils.PageBean;

public class BaseDaoImp<T> extends HibernateDaoSupport implements BaseDao<T> {
	
	private Class clazz;//用于接收运行时的泛型类型
	
	public BaseDaoImp(){
		//获得当前类型的带有泛型的父类
		ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
		//获得运行期的泛型类型
		clazz = (Class) genericSuperclass.getActualTypeArguments()[0];
	}

	@Override
	public void save(T t) {
		getHibernateTemplate().save(t);
	}

	@Override
	public void delete(T t) {
		getHibernateTemplate().delete(t);
	}

	@Override
	public void delete(Serializable id) {
		T t = findById(id);
		delete(t);
	}

	@Override
	public void modify(T t) {
		getHibernateTemplate().update(t);
	}

	@Override
	public T findById(Serializable id) {
		 T t = (T) getHibernateTemplate().get(clazz, id);
		return t;
	}

	@Override
	public Integer findTotalCount(DetachedCriteria dc) {
		Integer totalcount = null;
		dc.setProjection(Projections.rowCount());
		List totalcountlist = getHibernateTemplate().findByCriteria(dc);
		if(totalcountlist.size()>0&&totalcountlist!=null){
			String string = totalcountlist.get(0).toString();
			totalcount = Integer.parseInt(string);
		}
		//清空函数查询
		dc.setProjection(null);
		return totalcount;
	}

	@Override
	public List<T> findPageList(DetachedCriteria dc, PageBean pb) {
		//分页查询操作
		List<T> list = (List<T>) getHibernateTemplate().findByCriteria(dc, pb.getBegin(), pb.getPageSize());
		return list;
	}

	@Override
	public List<T> findList(DetachedCriteria dc) {
		return (List<T>) getHibernateTemplate().findByCriteria(dc);
	}

	@Override
	public void saveorupdate(T t) {
		
		getHibernateTemplate().saveOrUpdate(t);
		
	}

	
}

Dao实现类

package com.tangseng.dao.Imp;
import com.tangseng.dao.CustomerDao;
import com.tangseng.domain.Customer;

public class CustomerDaoImp extends BaseDaoImp<Customer> implements CustomerDao {

}

通过测试add方法接收参数正常,在debug模式下,当断点执行到getHibernateTemplate().saveorUpdate方法时跳转到ognl源码(看不懂),最后再页面输出错误信息,而控制台没有出现错误信息


点击保存,控制台打印接收到的参数


基本确定是getHibernateTemplate().saveorUpdate这个代码产生的问题,刚刚才发现,原来是事务没有提交。

原因在与配置Spring切入点的时候把,切入点配到Dao层去了。

要把Spring切入点配到service层的方法上才行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值