无法在JSP代码检查或自动完成中解析el变量

问题描述 投票:15回答:4

总结此处显示的答案Code assist in (jsp /jstl) view for Spring MVC model objects in Eclipse根本不适合我,是否需要更改设置?

[我刚刚在github上下载了示例spring-mvc-showcase,但在该项目中(即11.1.3或EAP 12版本均为企业版)都无法使用,请参见下文(我不知道它从哪里获取formBean的位置:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9TYTBCc5qcGcifQ==” alt =“和foo都可以,但不能作为自动完成选项使用

这里是我自己的项目的示例,下面的屏幕快照(底部框架)显示了我的控制器为模型添加了字符串属性并返回了正确的视图名称。然后,我希望在编辑该视图时将shopString提供为自动完成选项,但事实并非如此:显示在上面的JSP控制器,当输入“ s”时自动完成。>]<p>sg是一个JavaScript变量-很好,应该在那儿,但是“ shopString”在哪里?有没有需要更改的设置或缺少我要使用此功能的其他信息(将11.1.3企业版与所有spring插件一起使用)。</p><p>它在spring特定变量上也失败了:<img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9LWUZEVy5qcGcifQ==” alt =“在此处输入图像描述”>“ >><p>它们是开源的(春季教程项目之一吗?),在这里肯定可以工作...或者我的Intellij安装是否需要更改设置(我已经测试了全新的版本12 EAP的下载) ?</p><p>下面的另一个屏幕截图显示了我所有通过自动检测正确设置的spring coifg文件,但是代码检查失败了……这是<a href="https://github.com/SpringSource/spring-mvc-showcase" rel="nofollow" target="_blank">spring-mvc-showcase</a>项目:<img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS95YzRDOS5qcGcifQ==” alt =“代码检查和弹簧配置”></p></p><p class="desc">总结此处显示的答案Eclipse中的Spring MVC模型对象的(jsp / jstl)视图代码辅助功能根本不适合我,是否需要更改设置?我只是...</div></p> <div class="answers"><div class="answer" vote="24" tick="True"><div class="post-text" itemprop="text"><p>有一种执行此操作的标准方法,它不是IntelliJ特有的。</div><pre><code><jsp:useBean id="someModel" scope="request" type="foo.bar.SomeModelClass"/>
</code></p><p><em>type</pre>属性在这里不必是一个具体的类,它也可以是一个接口类型。通常,您会将这些声明放在JSP / JSPX文件的开头,以提供诸如“模型输入的声明”之类的内容。</em><p>实际上,在Spring的原始书中,建议使用这种声明性方式使用JSP(<em>专家一对一J2EE设计和开发。</p>)。至少7年以来,IntelliJ一直为此类页面提供完整的代码完成。</em><p>请注意,IntelliJ中还有其他相关的便利功能:如果EL变量引用标记为未定义,则可以按<em>Alt-Enter</p>选择一个QuickFix,它将插入上面的声明。它甚至会根据您访问的属性来尝试找出实际的类型。</em></p></div> <div class="answer" vote="13" tick="False"><div class="post-text" itemprop="text"><p>据我了解Spring,没有声明可以放入模型中的变量的定义。调用<code>model.addAttribute()</code>可以将对象添加到模型中,该对象可以通过参数标识或通过对象的类名自动生成。</div><p>因此,设想以下情况,您有多个方法:</p><pre><code>@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";
}
</code></p><p>和JSP类似于</pre><pre><code><c:out ${model.value} />
</code></p><p>由于在某些情况下无法正确映射哪些控制器可能会指向哪些视图,或者模型中的确切位置,因此您的IDE没有真正的机会为您提供适当的信息。 </pre><p>但是要支持IDE向您建议一些有用的信息,您可以使用类型提示。因此,您必须复制对象的整个引用,例如。 G。 <strong>foo</p>并添加一个JSP注释,例如:</strong><pre><code><%--@elvariable id="foo" type="com.mycompany.SomeObject"--%>
</code></p><p>警告将消失,并且完整的IDE支持就在您身边,使您可以<strong>遍历字段</pre> of <code>foo</code>。最好的事情之一是<strong>未使用的吸气剂警告</strong>也将消失。您可以直接从JSP或POJO直接调用<strong>显示用法</strong>操作。<p>这也适用于JSF,尤其是在JSF组件中。具有这种代码完成功能的漂亮功能,显示警告和错误。</strong><p>希望可以帮助您切换到Intellij Idea。</p><p><strong>编辑:</p>我还向一位朋友报告了此发现,并将整个内容包装到一个不错的博客条目中。也许您有兴趣阅读它:<a href="https://blog.notadomain.com/posts/2012-04-16-type-hints/" rel="nofollow" target="_blank">open link</a></p></strong></p> <div class="answer" vote="0" tick="False"><div class="post-text" itemprop="text"><p>在最新版本的<a href="http://confluence.jetbrains.net/display/IDEADEV/Leda+122.694+Release+Notes" rel="nofollow" target="_blank">intellij 122.694</a>中得到<em>固定] >>></div></div> <div class="answer" vote="0" tick="False"><div class="post-text" itemprop="text"><p>开始编写自己的拦截器时,我遇到了类似的问题。问题是我开始在视图解析器配置中使用引用<a href="https://i.stack.imgur.com/2dbdi.png" rel="nofollow" target="_blank"><img src="https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8yZGJkaS5wbmcifQ==" alt="xml issue"></a></em><p>不要使用这样的构造</p><pre><code><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" ref="prefix"/>
    <property name="suffix" ref="suffix"/>
</bean>-
</code></div></div></p></p></pre>

java jsp intellij-idea el
4个回答
© www.soinside.com 2019 - 2024. All rights reserved.