Struts2錯誤:There is no Action mapped for namespace... 解決方法

今天在使用 Struts2.1 做註解操作的時候,一直出現這個問題。花了半天時間才解決,錯誤原因真是讓人蛋疼!

錯誤提示:


項目結構:


使用註解的位置:

package com.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.hibernate.event.SaveOrUpdateEvent;

import com.biz.GoodsBIZ;
import com.dao.GoodsDAO;
import com.domain.Goods;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * GoodsAction.java
 *
 * @author Techzero
 * @Email [email protected]
 * @Time 2015年1月5日 上午9:05:11
 */
@ParentPackage("struts-default")
@Namespace("/goods")
public class GoodsAction extends ActionSupport {
	private Goods goods;
	
	public Goods getGoods() {
		return goods;
	}
	
	public void setGoods(Goods goods) {
		this.goods = goods;
	}

	@Action(value="findall", results={
			@Result(location="/admin/goods/show.jsp")
	})
	public String findAll() throws Exception {
		GoodsBIZ goodsBIZ = new GoodsBIZ();
		GoodsDAO goodsDAO = new GoodsDAO();
		goodsBIZ.setGoodsDAO(goodsDAO);
		
		List<Goods> goodsList = goodsBIZ.findAll();
		
		Map<String, Object> requestMap = (Map<String, Object>) ActionContext.getContext().get("request");
		requestMap.put("goodsList", goodsList);
		
		return ActionSupport.SUCCESS;
	}
}

解決方法:

看上去沒有任何問題,可是隻要一運行就報錯!百度了半天沒找到,最後發現我這個包名跟別人的不一樣,問題就出在這裏!將service換成action就可以了,以下是Struts2的原文文檔:

First the Convention plugin finds packages named struts, struts2, action or actions. Any packages that match those names are considered the root packages for the Convention plugin. Next, the plugin looks at all of the classes in those packages as well as sub-packages and determines if the classes implementcom.opensymphony.xwork2.Action or if their name ends with Action (i.e. FooAction).

大概意思是,如果要用Struts2的註解,必須要將action處理類放在struts, struts2, action, actions包或者其子包中。這個規定真心有點坑。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章