struts2 annotation 的@result 有点奇怪。好像是不是不支持chain?我的@result 是:
@Result(name = "insertReleaseTaskFail", type = "chain", location = "/taskManager/task!initReleaseTask.action")但是结果报错为:
There is no Action mapped for namespace /taskManager and action name /taskManager/task!initReleaseTask.action。我的action代码:
package net.win.action.task;import javax.annotation.Resource;import net.win.BaseAction;
import net.win.service.task.CreditTaskService;
import net.win.vo.CreditTaskVO;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.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;@SuppressWarnings("serial")
@Controller
@Scope("prototype")
@ParentPackage("17win-default")
@Results( {
@Result(name = "input", location = "/credit/task.jsp"),
@Result(name = "initTask", location = "/credit/task.jsp"),
@Result(name = "initReleaseTask", location = "/credit/releaseTask.jsp"),
@Result(name = "operationValidate", location = "/system/operationValidate.jsp"),
@Result(name = "noSellerPage", type = "redirect", location = "/userInfoManager/info!initSellerAndBuyer.php?noSellerDirect=noSellerDirect"),
@Result(name = "insertReleaseTaskFail", type = "chain", location = "/taskManager/task!initReleaseTask.action") })
@Namespace("/taskManager")
public class CreditTaskAction extends BaseAction {
@Resource
private CreditTaskService creditTaskService; private CreditTaskVO creditTaskVO = new CreditTaskVO(); @Action("/task")
public String execute() throws Exception {
return INPUT;
} /**
 * 发布任务
 * 
 * @return
 * @throws Exception
 */
public String releaseTask() throws Exception {
return creditTaskService.insertReleaseTask(creditTaskVO);
} /**
 * 初始化任务
 * 
 * @return
 * @throws Exception
 */
public String initTask() throws Exception {
return creditTaskService.initTask(creditTaskVO);
} /**
 * 初始化发布任务
 * 
 * @return
 * @throws Exception
 */
public String initReleaseTask() throws Exception {
return creditTaskService.initReleaseTask(creditTaskVO);
} public CreditTaskVO getCreditTaskVO() {
return creditTaskVO;
} public void setCreditTaskVO(CreditTaskVO creditTaskVO) {
this.creditTaskVO = creditTaskVO;
}}于是我查看struts2的文档。
但是更诡异。。struts2的文档是不是有点老了。反正他的result格式是 @Result(name="homeError", value="/homeError.page", type=TilesResult.class)
type=TilesResult.class 这种格式在我的struts2下面不能用。。谢谢大家帮忙

解决方案 »

  1.   

    嗯。顶一下。也遇到同样的问题。我是发现,如果你的下一个ACTION不是当前的ACTION中的话,即URL不一样的话,好像不行。例如:我当前处理的是/product/add.action,然后指定location为/user/list.action,它提示:There is no Action mapped for namespace /product and action name /user/list.action。明显两个URL不一样。