找不到ACTION

Sturts2整合后时出现诡异的异常:

java.lang.RuntimeException: Invalid action class configuration that references an unknown class named 。。。。。。。。。。。。。

解决方案:

1.检查struts.xml配置文件是否正确

一般注意 namespaces属性 method 属性和 action 节点的name 属性

<package name="authority" extends="default" namespace="/authority" >

<action name = "save" class="authorityAction" method = "save">

不光是地址是否正确 有时候多一个空格也会让xml文件读取出现问题

建议找一个能运行的action复制其中的配置,实在不行了,那就是页面的问题了,

无赖。。我遇到了这类的问题,页面的问题。。希望大家注意的jsp页面上尽量干净点,不要有多的hidden隐藏域

页面所有的无关的html都删除,只留一个提交到action的按钮或连接,结果成功提交了,没有上面的bug,后来我有把原来的页面恢复过来原来页面有个  

<s:iterator value="result" status="list" >

<input type="hidden"  name="tiggerId" value="${id }" />

<input type="hidden"  name="codeName" value="${codeName}" />

 </s:iterator>最后发现了在这里的错误,

2.首选加上id 来标识这个隐藏域的唯一,这个id不能重复。删除一些没有的隐藏域,结果成功的提交到了action 中

3.建议给每个单独的隐藏域在Action中添加属性 private String 隐藏域的name 属性的值 (get set方法不要忘了)

比如:<input type="hidden"  name="tiggerId" value="1" />那么后台就添加一个  private String tiggerId; //get set..方法

4.检查你的Action处理类,看看调用时return 的视图在配置文件有没有配置

java.lang.RuntimeException: Invalid action class configuration that references an unknown class named  

原因是没有合适的result name,比如:Action处理类中有一个方法return SUCCESS;而在配置文件中又没有

<result name="success">***.jsp</result>

这种错误太烦人了,今天又遇到一个:

5.Action 中有一个Long 类型的属性,表单get 提交了一个汉字,结果没有报NumberFomrate异常结果报了java.lang.RuntimeException: Invalid action class configuration that references an unknown class named ,纠结

6.纠结不断,诡异,今天又遇到一个在一个页面通过如下代码提交:

var userForm=document.forms["userForm"];
userForm.action="../show.action?selectIds=${selectIds}";
userForm.submit();

而我的jsp页面正好有这个name=selectIds的隐藏域 结果错误出现了,诡异,遇到烦人的错误..我绕开了而用了
window.location.href="../show.action?selectIds=${selectIds}"; 解决了,

回过头看看,最后之前提交的发现了,参数多次提交了,selectIds 在jsp页面post提交时就有值了,有提交一次


<think>我们注意到用户提到“都不到action_a_to_b”,这通常意味着在导航图中没有定义对应的action,或者ID写错了。 因此,我们需要检查导航图定义和代码中的ID是否一致,并提供排查步骤。 同时,我们也要考虑到用户可能没有正确设置导航图,或者没有使用Safe Args插件导致Directions类未生成。 根据用户的问题,我们重点解决“不到action”的问题,并给出解决方案。</think>您提到的问题很常见,通常是由于以下原因导致不到 `action_a_to_b`。以下是详细排查和解决方案: ### 常见原因及解决方案 1. **未正确生成导航图ID** - 确保在 `nav_graph.xml` 中明确定义了 action: ```xml <fragment android:id="@+id/fragmentA"> <action android:id="@+id/action_a_to_b" app:destination="@id/fragmentB" /> </fragment> ``` 2. **缺少 Safe Args 插件**(最常见原因) 在 `build.gradle` 添加: ```gradle // 项目级 build.gradle dependencies { classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.5.3" } // 模块级 build.gradle plugins { id 'androidx.navigation.safeargs.kotlin' // Kotlin项目 // id 'androidx.navigation.safeargs' // Java项目 } ``` → 同步后会自动生成 `Directions` 类(如 `FragmentADirections.actionAToB()`) 3. **ID 命名冲突** - 检查是否在多个 fragment 中定义了相同 ID 的 action - 推荐命名规范:`action_<源>_to_<目标>` 4. **清理重建项目** Android Studio 菜单 → Build → Clean Project → Rebuild Project ### 正确使用示例 ```kotlin // 使用生成的 Directions 类(需 Safe Args) binding.button.setOnClickListener { val direction = FragmentADirections.actionAToB( param1 = "value", param2 = 123 ) findNavController().navigate(direction) } // 直接使用 ID(不推荐,易出错) findNavController().navigate(R.id.action_a_to_b) ``` ### 验证步骤 1. 检查 `build/generated` 目录下是否生成 `Directions` 类 2. 在代码中输入 `FragmentADirections.` 看是否有自动补全 3. 检查 `nav_graph.xml` 中的 action ID 是否与代码一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值