表单提交时报错:No result defined for action com.ylj.action.BbsAction and result input

原因有可能是表单里的值为空,或是ID重复传到Action里,或是其他值在Action里类型转换发生错误,发生错误要显示错误信息。须配置input。所以报此错误。
<think>我们正在处理一个Struts2框架中的异常:`com.opensymphony.xwork2.config.ConfigurationException: No result defined for action ... and result input`。 这个异常通常发生在Struts2的Action执行过程中,当框架试图返回一个名为"input"的结果,但在配置文件中没有找到对应的结果定义。 解决这个问题的步骤通常包括: 1. **理解异常原因**:在Struts2中,当数据验证失败,框架默认会尝试返回"input"结果。如果Action的配置中没有定义名为"input"的结果,就会抛出此异常。 2. **检查Action配置**:查看该Action的配置文件(通常是struts.xml或者通过注解配置),确保为"input"结果定义了相应的视图(如JSP页面)。 3. **添加input结果**:在Action的配置中,添加一个结果名为"input"的映射。例如: ```xml <action name="whiteBoxPushAction" class="com.linkage.smp.plugin.zj.httpinf.WhiteBoxPushAction"> <result name="success">/success.jsp</result> <result name="input">/input.jsp</result> <!-- 添加这一行 --> </action> ``` 4. **检查数据验证**:如果使用了Struts2的验证框架,验证失败会返回"input"。确保验证规则正确,并且当验证失败,确实有一个合适的页面展示错误信息。 5. **检查拦截器栈**:确认Action使用的拦截器栈包含了validation拦截器(或其他可能导致返回"input"的拦截器),并且配置正确。 6. **异常处理方法**:如果以上都正确,还可以考虑为Action配置全局异常处理,捕获可能出现的异常并跳转到指定页面。 7. **日志调试**:开启更详细的日志级别(如DEBUG)来跟踪Action执行过程,确定是什么原因导致了返回"input"结果。 根据异常信息中提到的Action类`com.linkage.smp.plugin.zj.httpinf.WhiteBoxPushAction`,我们需要在Struts配置文件中找到该Action,并确保它有一个名为"input"的结果。 如果该Action是通过注解配置的,则需要在类中添加一个对应的方法或者使用`@Result`注解来定义input结果。例如: ```java @Action(value = "whiteBoxPushAction", results = { @Result(name = "success", location = "/success.jsp"), @Result(name = "input", location = "/input.jsp") // 添加input结果 }) public class WhiteBoxPushAction extends ActionSupport { // ... } ``` 另外,如果问题发生在使用第三方插件或框架扩展的情况下,还需要检查相关的插件配置是否正确。 如果经过以上步骤仍然无法解决,可能需要检查项目依赖的Struts2库版本,以及是否有冲突的配置文件。 由于问题描述中提到了具体的Action类和异常信息,我们可以假设用户已经确认了该异常的发生场景,因此重点放在配置的修正上。 下面,我们将生成相关问题: </think>### 解决 `ConfigurationException: No result defined for action ... and result input` 错误的方法 这个错误发生在 Struts2 框架中,表示 Action 类缺少对 `input` 结果的配置。以下是完整的解决步骤: #### 1. **理解错误原因** - 当 Struts2 的验证失败或表单提交异常,框架会自动尝试返回 `input` 结果 - 若 `struts.xml` 或注解配置中未定义 `input` 结果路径,则抛出此异常 - 完整错误信息: `No result defined for action {action类} and result input` #### 2. **解决方案** ##### (1) 添加 `input` 结果到配置文件(推荐) 在 `struts.xml` 中找到对应 Action 的配置,添加 `<result name="input">`: ```xml <action name="whiteBoxPushAction" class="com.linkage.smp.plugin.zj.httpinf.WhiteBoxPushAction"> <!-- 添加input结果映射 --> <result name="input">/WEB-INF/error/inputError.jsp</result> <result name="success">/WEB-INF/success.jsp</result> </action> ``` ##### (2) 使用注解配置(若使用 Convention 插件) 在 Action 类上添加注解: ```java @Action( value = "whiteBoxPushAction", results = { @Result(name = "input", location = "/input-error.jsp"), // 关键修复 @Result(name = "success", location = "/success.jsp") } ) public class WhiteBoxPushAction extends ActionSupport { // Action 代码 } ``` ##### (3) 全局结果配置(多 Action 共享) 在 `struts.xml` 中添加全局结果: ```xml <global-results> <result name="input">/common/inputError.jsp</result> </global-results> ``` #### 3. **验证逻辑检查** - 检查表单验证规则(`validate()` 方法或 XML 验证文件) - 确保字段错误正确返回 `INPUT`: ```java public String execute() { if (hasErrors()) { addFieldError("field", "错误信息"); return INPUT; // 必须返回此常量 } return SUCCESS; } ``` #### 4. **调试建议** 1. 在 `struts.xml` 开启详细日志: ```xml <constant name="struts.devMode" value="true" /> ``` 2. 检查表单字段与 Action 属性的命名一致性 3. 确认 JSP 表单使用 Struts2 标签: ```jsp <s:form action="whiteBoxPushAction"> <s:textfield name="param1"/> <!-- name需匹配Action属性 --> </s:form> ``` #### 5. **根本原因预防** - 所有 Action 都应配置基础结果集: ```xml <result name="success">...</result> <result name="error">...</result> <result name="input">...</result> <!-- 必须包含 --> ``` - 使用继承减少重复配置: ```xml <package extends="struts-default" abstract="true"> <global-results> <result name="input">/global/input.jsp</result> </global-results> </package> ``` > **关键提示**:此错误通常在表单提交触发,优先检查 ${field} 字段的验证规则和数据绑定是否匹配 Action 属性[^struts2_doc]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值