总结此处显示的答案Code assist in (jsp /jstl) view for Spring MVC model objects in Eclipse 对我来说根本不起作用,是否有需要改变的环境?
我刚刚在github上下载了样本spring-mvc-showcase,它在该项目中没有开箱即用(11.1.3或EAP 12版本都是完整的企业版),见下文(I不知道它从哪里得到formBean:
以下是我自己项目中的示例,下面的屏幕截图(底部框架)显示我的控制器向模型添加字符串属性并返回正确的视图名称。我希望shopString在编辑该视图时可以作为自动完成选项提供,但它不是:
sg是一个javascript变量 - 它应该很棒,但是“shopString”在哪里? 是否有我需要更改的设置或我缺少的其他设置以获得此功能(使用带有所有弹簧插件的11.1.3企业版)。
弹簧特定变量也失败了:
他们是一个开源(春季教程项目之一吗?),这绝对有效...或者我的Intellij安装中是否需要更改设置(我已经测试了12版EAP的全新下载)?
下面的另一个屏幕截图显示了通过自动检测正确设置的所有spring coifg文件,但代码检查失败...这是spring-mvc-showcase项目:
答案 0 :(得分:24)
有一种标准的方法可以做到这一点,而不是IntelliJ特定的。
<jsp:useBean id="someModel" scope="request" type="foo.bar.SomeModelClass"/>
此处的 type 属性不需要是具体的类,它也可以是接口类型。通常,您将这些声明放在JSP / JSPX文件的开头,以提供类似“模型输入声明”的内容。
事实上,在Spring的原始书中推荐使用这种声明式方式的JSP( Expert One-on-One J2EE设计和开发。)。自至少7年以来,IntelliJ一直为这些页面提供完整的代码完成。
请注意,IntelliJ中还有其他相关的便利功能:如果EL变量引用标记为未定义,则可以按 Alt-Enter 选择QuickFix,它将插入如上所述的声明。它甚至会根据您正在访问的属性来确定实际类型。
答案 1 :(得分:12)
据我了解Spring,没有关于变量定义的声明可以放入模型中。调用model.addAttribute()
可以向模型添加一个对象,由对象标识或由对象的类名自动生成。
想象一下你有多种方法的情况如下:
@RequestMapping("foo") public String foo(Model model) {
model.addAttribute("model", new Foo());
return new Random().nextBoolean() ? "page" : "someOtherPage";
}
@RequestMapping("bar") public String bar(Model model) {
model.addAttribute("model", new Bar());
model.addAttribute("model", new Foo());
model.addAttribute("model", new Bar());
return new Random().nextBoolean() ? "page" : "someOtherPage";
}
,JSP就像
<c:out ${model.value} />
由于在某些情况下没有正确映射哪些控制器可以转发到哪些视图,也没有确切位于模型中的内容,因此IDE没有真正的机会为您提供适当的信息。
但是为了支持IDE向您提供一些有用的信息,您可以使用类型提示。因此,您必须复制对象的整个引用,例如。 G。 foo 并添加一条JSP评论,如:
<%--@elvariable id="foo" type="com.mycompany.SomeObject"--%>
警告将消失,完整的IDE支持就在您身边,允许您遍历foo
的字段。
最好的事情之一是未使用的getter警告也将消失。您可以直接从JSP或POJO直接调用 show usages 操作。
这也适用于JSF,尤其是JSF组件。非常简洁的功能,可以完成这种代码,显示警告和错误。
希望能帮助您切换到Intellij Idea。
编辑:我还向朋友报告了这个发现,将整个事情包装成一个不错的博客文章。也许你有兴趣阅读它:open link
答案 2 :(得分:0)
答案 3 :(得分:0)