【发布时间】:2011-01-16 13:09:50
【问题描述】:
我是一个日常的 C#/ASP.NET MVC/Visual Studio 用户,我刚刚在 JAVA/GRails/Eclipse 中开始了一个项目,但我是发现使用 Eclipse 的调试功能非常困难,并且发现它们与 Visual Studio 相比有些受限。特别是,我发现以下内容相当令人失望,但我不知道它们是否是 Eclipse 作为香草 IDE 的限制,或者我正试图将其用于使用 Grails 进行开发的事实。
看起来相当于 Visual Studio 的“即时窗口”——在 VS 中,我在调试期间一直使用即时窗口,我发现在 Eclipse 中相当于“展示”视图。然而,在 VS 中,我可以输入对象的名称(例如“?user”),然后按回车键,我会得到该对象的所有属性/方法,而在 Eclipse 中,我必须突出显示表达式,然后明确告诉它检查、执行等。完成后,它会将检查结果添加到另一个窗口,迫使我在两者之间切换。
显示视图似乎无法实际评估属性或方法。例如,如果我有一个用户类的实例,并且在显示窗口中键入 userInstance.FirstName 或调用诸如 userInstance.FullName() 之类的方法,我会收到评估失败错误:“方法 FullName() 未定义类型对象”。此外,如果我为实例添加手表,我可以看到属性,但同样看不到该方法。但是,该方法作为代码块中的表达式计算得很好(证明它确实存在并且被识别)
1234563查看,突出显示它并从显示视图上下文菜单中添加一个手表。
评估诸如 User.get(params.id) 之类的表达式(再次在显示视图中)返回错误,如下所示:
User.get(params.id)
评估失败。 原因:无法解析参数
但是,它在单步执行代码时评估良好。这是因为 Grails/Groovy 的动态特性吗?
代码sn-ps:
User.groovy:
class User {
String firstName
String lastName
String middleName
private String fullname
static constraints = {
firstName(blank:false)
lastName(blank:false)
middleName(blank:false)
}
public String FullName()
{
fullname = firstName + " " + lastName;
}
}
UserController.groovy:
class UserController {
...
def show = {
User userInstance = User.get(params.id)
userInstance.FullName()
if (!userInstance) {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])}"
redirect(action: "list")
}
else {
[userInstance: userInstance]
}
}
...
}
谁能说出这些是否是 Eclipse、Eclipse 的 Grails 插件或其他可能的限制。无论如何,他们使用 JAVA 开发 MVC Web 应用程序的吸引力远不如我使用的等效 ASP.NET MVC。
谢谢
【问题讨论】: