ognl.OgnlRuntime.callAppropriateMethod 中的 MethodFailedException

2023-12-31

我有一个有效的 Action 和 JSP 表单,用于在非常基本的 Struts 2.2.1.1 应用程序中创建新实体。我正在尝试修改应用程序以重新使用相同的 JSP 表单来编辑实体。

我添加了“隐藏”ID 标签,现在提交表单时出现错误。有人可以给我一些帮助吗?

我用谷歌搜索了这个问题,并看到其他人发布了类似的错误,但我不知道如何解决它。

我提交表单时堆栈跟踪的摘录:

2011-05-02 11:09:36,132 3198497 ["http-bio-8080"-exec-23] WARN
com.opensymphony.xwork2.ognl.OgnlValueStack - Error setting expression
'id' with value '[Ljava.lang.String;@100ac03'
ognl.MethodFailedException: Method "setId" failed for object
org.robbins.flashcards.model.Tag@1b9eb34 [name='null' ]
[java.lang.NoSuchMethodException:
org.robbins.flashcards.model.Tag.setId([Ljava.lang.String;)]
    at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285)
    at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)

JSP 摘录:

<%@ taglib prefix="s" uri="/struts-tags"%>
...
<s:form action="saveOrUpdateTag" method="post">
    <s:hidden name="id" />
    <s:textfield name="name" key="label.tag.name" size="20" />
    <s:submit label="label.flashcard.submit" align="center" />
</s:form>

动作类摘录:

public class TagAction extends FlashCardsAppBaseAction implements
ModelDriven<Tag> {

    Tag tag = new Tag();

    public Tag getTag() {
        return tag;
    }

    public void setTag(Tag tag) {
        this.tag = tag;
    }
    public String createTag() {
        ...
       }
}

摘自POJO:

public class Tag  implements java.io.Serializable {


     private int id;
     private String name;

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }
...
}

摘自 Struts.xml

    <action name="saveOrUpdateTag"
            class="org.robbins.flashcards.presentation.TagAction"
            method="createTag">
        <result name="success" type="tiles">displaytag.tiles</result>
        <result name="input" type="tiles">tagform.tiles</result>
    </action>

仅供参考 - 我还向 Struts-User 分发列表提交了这个问题,但尚未收到任何输入,因此我也将其发布到此处。当有更多信息可用时,我将更新另一篇文章,反之亦然。


NoSuchMethodException ... ([Ljava.lang.String;)] 问题可能是由于 HTTP 请求中具有多个同名属性引起的。

如果多个同名属性的情况是合法的,您可以通过将 setId(int id) 更改为 setId(String[] idArray) 并将每个数组成员字符串解析为整数来处理多个 id 值。

确保操作类中只有一个 setId 方法 (setId(String[] idArray))。如果有多个名称相同但参数类型不同的方法,似乎某些版本的 struts/ognl (ognl 3.0.4?)可能会感到困惑。

例如:

public void setId(String[] idArray) {
    for (String idString : idArray) {
       int id = Integer.parseInt(idString);
       ... handle different id values somehow ...
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ognl.OgnlRuntime.callAppropriateMethod 中的 MethodFailedException 的相关文章

随机推荐

  • 日期上的 Asp.net LINQ groupby 和 orderBy 未检索预期输出

    我正在使用 linq2sql 开发 asp net mvc3 应用程序 我有一个 SiteLog 对象类型列表 其中还包含每个对象 名为 CLRExceptionType 的字符串和名为 EntryDate 的日期 该列表包含在字典中 pr
  • Python Kivy不会使用SDL2,坚持使用pygame

    我努力做Kivy https kivy org 1 11 0 使用SDL2 on 乌班图18 04桌面 它不断要求pygame但这已被弃用 我不想将其用于新项目 在全新的Ubuntu 18 04 虚拟机这就是我所做的 sudo apt in
  • 许多 URI 语法中“://”的起源 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 谁都知道 或者 来自大多数 URI 语法 例如 为什么不写成 http www example com a1kmm 的答案对于 URL 的特定应用很有
  • IIS AppPoolIdentity 和文件系统写入访问权限

    这是 IIS 7 5 和 ASP NET 的一个问题 我一直在研究但毫无进展 任何帮助将不胜感激 我的问题是 在 IIS 7 5 中使用 ASP NET IIS 和 或操作系统如何允许 Web 应用程序写入类似的文件夹C dump在完全信任
  • iphone NavigationController 清除视图堆栈

    我有一个使用导航控制器的 iPhone 应用程序 在该控制器中我推送了一些视图 在某些情况下 我想 清除 视图堆栈 只保留堆栈中导航控制器的 rootViewController 并推送我拥有的另一个 viewController 有人可以
  • 在 ionic 2 中使用 nav.push 和侧面菜单

    我尝试制作一个小应用程序ionic2了解它 但我在导航方面遇到问题 事实上我很清楚a之间的区别rootpage 换成白色nav setRoot 和一个 正常 页面 添加nav push 问题是对于我的应用程序 我需要能够打开侧面菜单 如果我
  • Sonarqube 针对特定产品风格和构建类型运行(gradle 插件)

    目前 我们在针对特定构建变体运行 sonarqube 时遇到问题 例如clienttestDebug 我们的结构是这样的 我们有 3 种不同的构建类型 Release Debug Profile 并拥有多种 超过30种 产品口味 例如 pr
  • 原始音频数据流传输过程中网络音频播放出现裂纹

    我有一台服务器通过网络套接字发送原始音频块 我们的想法是检索这些内容并以尽可能流畅的播放方式播放它们 这是最重要的一段代码 ws onmessage function event var view new Int16Array event
  • Java 中数组初始值设定项内带有尾随逗号的数组

    数组初始值设定项可用于在编译时初始化数组 如下所示带有尾随逗号的初始值设定项可以正常编译 int a 1 2 3 4 5 6 Trailing commas cause no compiler error for int i 0 i
  • 菜单项突出显示时发生的事件

    有谁知道每当突出显示菜单项时就会触发一个事件 我想在状态栏中显示每个菜单命令突出显示的描述 无论是使用鼠标还是键盘突出显示它们 我都希望发生这种情况 但经过相当多的努力 我没有看到任何类似的事件 我什至尝试覆盖WndProc检测原始菜单消息
  • 如何修复 hubot 中的“/app/scripts/[foo].coffee 使用已弃用的文档语法”?

    检查我的机器人的 Heroku 日志显示如下消息 app scripts tigger coffee 使用已弃用的文档语法 但我似乎找不到未弃用的文档语法应该是什么 这通常是由于TomDoc http tomdoc org 在文件的顶部 有
  • 提取特定字符后的文本

    我需要提取后面的单词 我怎样才能做到这一点 我正在尝试什么 text Hello there bob user text text find 1 print user output bob 但正确的输出应该是 bob 一个有趣的正则表达式解
  • 我可以将现有的 git 存储库与 openshift 一起使用吗?

    是否只需要在 openshift 上安装 git repo 我已经有 bitbucket github git repo 并且更愿意只推送到那里 我可以简单地连接到它以便 openshift 获得提示吗 或者为了简化 我只在github上推
  • 如何在 jquery 循环之外访问该变量?

    我有一个简单的 jquery 循环来遍历我的表单并 查看是否有空字段 如果有空 则用 空 类标记它们 并 然后创建一个 错误 变量 基本上 check all the inputs have a value input each funct
  • 如何在 ASP.NET MVC 中使用单选模式创建列表框?

    如何在 ASP NET MVC 中使用单选模式创建列表框 我假设您正在寻找一个视觉上类似于 ListBox 的选择框 即显示多行 但功能上类似于 DropDownList 仅允许一项选择 看起来没有一种特别简单的方法可以使用 ListBox
  • 使用JSF Converter时出现延迟加载异常(引用一个集合)

    这是我对这个问题进行多次研究后的第一篇文章 此示例在 Jboss 7 1 下运行 使用 Seam 3 1 焊接 持久性 面 并使用 Seam 管理的持久性上下文 我面临一个问题 经典failed to lazily initialize a
  • 如何在matplotlib中为子图设置相同的纵横比

    我想要一排具有相同纵横比的子图 假设我想绘制两个在 y 轴上具有不同范围的不同函数 这方面似乎有很多问题 但示例似乎很方便地对所有子图具有相同的轴 无论如何 我发现没有一个对我有帮助 我尝试过以下方法 import numpy as np
  • 如何控制下拉列表的展开方向?

    如何控制下拉列表的展开方向 我在页面右侧有一个很长的列表 它会超出页面 因为它会向右扩展 我可以让它向左扩展吗 据我所知 这不在设计师的控制之下 而是在浏览器的控制之下 至少对于 正常 而言select标签 您始终可以考虑使用现有的库 例如
  • Android 4.2:带有嵌套片段的返回堆栈行为

    在 Android 4 2 中 支持库获得了对嵌套片段的支持see here http developer android com about versions android 4 2 html NestedFragments 我玩过它并发
  • ognl.OgnlRuntime.callAppropriateMethod 中的 MethodFailedException

    我有一个有效的 Action 和 JSP 表单 用于在非常基本的 Struts 2 2 1 1 应用程序中创建新实体 我正在尝试修改应用程序以重新使用相同的 JSP 表单来编辑实体 我添加了 隐藏 ID 标签 现在提交表单时出现错误 有人可