2 u011139317 u011139317 于 2014.12.15 15:56 提问

Struts的注解方式无效

报错:
No result defined for action manage.action.MultiplyAction$$EnhancedByS2AOP$$1f8a98 and result mytest

MultiplyAction.java

@ParentPackage("manage")
@SuppressWarnings("serial")
@Results({
        @Result(name = "success", value = "WEB-INF/index.jsp"),
        @Result(name = "mytest", value = "WEB-INF/index.jsp") })

web.xml

<filter>
    <filter-name>struts2</filter-name>
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
      <param-name>actionPackages</param-name>
      <param-value>manage.action</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping> 
可能是在哪里错了呢

1个回答

devmiao
devmiao   Ds   Rxr 2014.12.15 16:00

No result defined for action

在开发中遇到这个问题,No result defined for action:
原因:Action中的属性值为空的时候,Struts2的默认拦截器会报错,但是又找不到input的Result,不能够把错误返回,所以报这种错误。

解决方法:
1.在页面中给空值赋默认值。
2.重新定义一个Action,去掉空值的成员变量。

3.添加input的Result,并在这个页面给出提示

  当你在用struts2开发时,如果,从页面跳入action时,页面报No result defined for action and result时,大部分的原因有以下几种:

1、validate方法没有通过;

2、页面元素中有重命名时,但后台action类的对应的接收此同名参数的是变量而没有写成数组

要检查这种错误时,可以
1,在后台action类中重写ActionSupport中的
void addActionError(String anErrorMessage)
void addActionMessage(String aMessage)
void addFieldError(String fieldName, String errorMessage)
这三个方法,在并在其实现代码中设置断点,监控传入的参数,并可获知页面的相关报错具体原因.
2,在页面中加入以下标签,将错误显示出来 :

< div style =”color:red” >
< s:fielderror />
</ div >


public void addActionError(String anErrorMessage){
String s=anErrorMessage;
System.out.println(s);
}
public void addActionMessage(String aMessage){
String s=aMessage;
System.out.println(s);

}
public void addFieldError(String fieldName, String errorMessage){
String s=errorMessage;
String f=fieldName;
System.out.println(s);
System.out.println(f);

}

u011139317
u011139317 如果换成xml方式配置就可以,所有前面都是对的,只是注解方式不成功而已。我想问的就是为什么不成功
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!