0

我有一个基于 Apache Tomcat + Hibernate 的应用程序。我有一个 MyModel 类和一个 MyViewModel 类,它装饰一个 MyModel 类型的对象。

当我收到请求时,我会在 Map 中返回多个 MyViewModel 实例。假设一个实例是 x。当我尝试访问${x.comments}时,我得到一个 property not found 异常。

我仔细检查了 MyModel 是否包含 getComments() 和 setComments() 方法。MyViewModel 还包含 getComments() 方法,该方法在装饰对象上调用 getComments(),如果返回 null,则返回空字符串。

现在令人惊讶的是,当我在代码中的任何地方添加注释字段时,这段代码昨天还在工作。我的数据库仍然有评论字段。但不知何故,豆子没有被正确识别。

我对代码进行了一些更改,现在我正在使用 jquery-ui 来访问该页面,但我看不出这应该有何不同,因为我可以访问除注释字段之外的所有其他字段。

Hibernate 日志显示选择查询未获取评论字段。

我尝试重新启动服务器,我的 Eclipse IDE 似乎没有任何工作。

你能帮我找出问题吗?

提前致谢!

4

1 回答 1

-1

修复!

MyViewModel 类缺少默认构造函数。

为什么我不能早点抓住它?

我在 WEB-INF/lib 下有一组旧的 jar 文件。但是,当我在 Eclipse 中配置项目时,我在单独的目录中下载了较新版本的 jar 文件并将它们添加到构建路径,但我的 WEB-INF/lib 仍然包含旧的 jar 文件。我最终计划拥有新版本,但由于一切正常,我没有打扰。

现在不知何故,这昨天还在工作,但我可能在提交之前做了某种“清理”。我一定是从 MyViewModel 中删除了默认构造函数。但是我可能在测试之前没有重新启动服务器,因此它工作正常。

理想情况下,这应该在部署过程中被捕获。但不知何故,新版本的罐子没有发现错误。当我切换到 WEB-INF/lib 目录中的 jar 时,服务器在初始化期间开始抛出异常,说缺少默认构造函数,因此无法初始化 bean。这解决了这个问题。

我试图重现这种情况。我删除了默认构造函数,将旧的 .classpath 文件放回项目目录中,它在部署期间不会捕获错误,但在运行时会失败。原因是 .classpath 中的一些依赖项不是必需的,也无法满足。所以 Eclipse 向我显示了一个红色的感叹号(不是通常表示构建问题的十字符号)。我现在明白感叹号意味着我的项目存在验证错误,并且项目没有重新构建,因为构建路径包含缺少的依赖项。

所以我从构建路径中删除了缺少的依赖项,红色感叹号消失了。现在在部署过程中发现了错误。

这么多不使用Maven。

于 2012-09-03T05:45:31.037 回答