Struts2中Action有返回值,则在struts的配置文件中一定要配置result否则会报错:No result defined for action com.supermap.earth.ri

本文详细解析了Struts2框架中用于指定视图页面的result元素的使用方式,包括success、error、input、login和none五个静态常量的作用及应用场景,并提供了实例代码演示。
<action name="deleteFile" method="deleteFile" class="com.supermap.earth.rims.action.disaSurRpt.DisaMediaAction">
<result name="success">/html/surverReport/liveSurverReport.jsp</result>
<result name="error">/html/surverReport/liveSurverReport.jsp</result>

</action>

String 里面有5个static 常量分别是:
ERROR  INPUT LOGIN NONE SUCCESS
例如 如果在excute 中返回的是 ruturn SUCCESS;
也就相当于返回的是return "success"字符串
就必须在struts.xml中写上对应的"success"
<result name="success">/x.jsp</result>

当然EORROR 对应的就是"error";字符串
当然INPUT 对应的就是"input";字符串
当然LOGIN 对应的就是"login";字符串
当然NONE 对应的就是"none";字符串

要不你就换一换把return INPUT换成return "input";试一试
一定要确定你在excute返回的字符串在  struts.xml中有定义

还有一个要提醒你的就是:
 在validate中验证有错误的话且没有指定return 字符串的话,
struts2默认就返回的是 return INPUT 也就是return "input"

<think>我们正在处理一个关于Struts2框架的错误:`com.opensymphony.xwork2.config.ConfigurationException: No result defined for action ...`。根据用户提供的两个引用之前的问题,我们需要总结出解决此错误的方案。 根据引用[1]:该错误通常表示没有为action定义名为“error”的结果(或其他结果),但实际原因可能是action中引用的方法未找到或其他错误(例如,引用了一个未更新的工具类方法)。 根据引用[2]:该错误可能是由于struts.xml配置文件错误导致的,并给出了一个配置示例。 因此,我们可以归纳出以下解决步骤: 1. **检查struts.xml配置文件**:确保在struts.xml中为对应action定义了正确的结果(result)。特别是检查结果名称是否与action方法返回字符串匹配,以及结果页面是否存在。 示例配置(来自引用[2]): ```xml <package name="default" extends="struts-default" namespace="/"> <action name="user_*" class="com.zwl.crm.web.action.UserAction" method="user_regist"> <result name="success">/login.jsp</result> </action> </package> ``` 注意:在这个例子中,action方法`user_regist`返回"success"时,会跳转到login.jsp。如果方法返回了其他(比如"error"),但没有在配置中定义,就会报错2. **检查action方法**:确保action中调用的方法存在,并且没有其他运行时错误(如空指针、类未找到等)。特别是,如果action中引用了其他类的方法,确保这些类已经正确部署,并且方法签名正确。 3. **检查方法返回字符串**:确保action方法返回字符串(如"success"、"error"等)在struts.xml中都有对应result定义。 4. **检查结果页面路径**:确保result中指定的页面路径正确,且存在于Web应用的相应位置。 5. **更新引用的类或方法**:如果修改了action所引用的其他类(如工具类),确保这些更改已经部署到服务器上(重新编译、重新部署等)。 6. **查看完整错误堆栈**:查看服务器日志中的完整错误信息,通常会有更详细的错误原因(例如,是否是因为某个方法未找到,或者某个类未定义等)。 7. **检查命名空间**:如果action配置在某个命名空间下,访问时URL需要包含正确的命名空间。 由于用户提到“本地OK,传服务器上报错”,还要注意环境差异: - 服务器上的配置是否与本地一致? - 服务器上的代码是否是最新且完整部署? - 服务器上的依赖库是否完整? 总结解决方案步骤: 1. 检查struts.xml中对应actionresult配置是否完整(特别是方法返回的所有可能结果)。 2. 检查action方法中调用的其他方法或类是否存在,且没有错误。 3. 检查服务器上部署的代码是否为最新,特别是被修改的类是否已经更新。 4. 查看服务器日志,定位具体错误原因。 根据以上分析,回答用户问题。 </think>### 解决 `com.opensymphony.xwork2.config.ConfigurationException: No result defined for action` 错误的方法 此错误表示 Struts2 框架无法Action返回结果找到对应的视图配置。以下是系统性的解决方案,结合引用内容常见排查经验: --- #### **1. 检查 `struts.xml` 配置(核心原因)** - **结果映射缺失** 确认 Action 方法返回的所有字符串(如 `"error"`, `"success"`)都在 `<result>` 标签中明确定义: ```xml <action name="yourAction" class="com.example.YourAction"> <!-- 必须包含所有可能的返回 --> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> <!-- 确保 error 路径存在 --> </action> ``` *引用[1][2]均强调未定义 `error` 结果是常见诱因*[^1][^2]。 - **通配符配置错误** 若使用通配符(如 `method="{1}"`),需检查方法名与返回的匹配: ```xml <action name="user_*" method="{1}" class="com.example.UserAction"> <result name="success">/result_{1}.jsp</result> </action> ``` --- #### **2. 验证 Action 方法实现** - **方法签名一致性** 检查 `struts.xml` 中 `method` 属性Action 类中的方法名**严格匹配**(大小写敏感)。 - **返回合法性** 确保方法返回字符串(如 `return "error";`)在配置中有对应 `<result>`。 *引用[1]提到:即使报错指向配置,实际可能是方法内部引用缺失或工具类未更新*[^1]。 --- #### **3. 检查视图文件路径** - 确认 JSP/HTML 文件路径与 `<result>` 中配置**完全相同**(如 `/error.jsp` 需位于 WebRoot 根目录)。 - 路径避免拼写错误或多余空格(如 ` /error.jsp `)。 --- #### **4. 依赖项环境排查** - **服务器环境一致性** 本地正常但服务器报错时(引用[1]场景): - 检查依赖库(如 `xwork-core.jar`)版本是否一致。 - 清理服务器缓存并重新部署。 - **类更新同步** 确保 Action 引用的工具类或方法已同步到服务器(如引用[1]中提到的工具类缺失)[^1]。 --- #### **5. 日志分析** - 查看服务器日志(如 Tomcat `catalina.out`)获取完整堆栈信息: - 若提示 `MethodNotFoundException`,检查方法名拼写或权限修饰符(需 `public`)。 - 若提示 `ClassNotFoundException`,检查包路径或编译文件是否缺失。 --- #### **总结流程图** ```mermaid graph TD A[报错No result defined for action] --> B{检查struts.xml} B --> |缺失result| C[添加<result name=''error''>] B --> |路径错误| D[修正JSP路径] A --> E{检查Action方法} E --> |方法名不匹配| F[修正method属性] E --> |返回未定义| G[扩展result配置] A --> H{服务器环境} H --> |依赖冲突| I[统一库版本] H --> |未更新代码| J[重新部署工具类] ``` 通过以上步骤,90% 的此类错误可被解决。重点优先检查 `struts.xml` 的 `<result>` 定义 Action 方法返回一致性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值