netbeans 7.0显示Struts2选择标记中的错误.. netbeans版本6.9不显示此错误

<s:select name="PenaltyPercentage" id="PenaltyPercentageId" list="#{'7.5%':'7.5%', '15.0%':'15.0%'}"  headerKey="" headerValue="Please Select" emptyOption="false">  

错误消息如下所示

 Encountered ":" at line 1, column 9. Was expecting one of: "}" ... "." ... "]" ... ">" ... "<" ... 

Netbeans 7使用现在使用#字符的JSP EL 2.1。

对我来说(Netbeans IDE 7.0 RC1),虽然该行标记有错误,但编译正常并且可以正常工作。 如果glassfish不执行jsp,则以下链接显示如何在JSP 2.1容器中禁用JSP EL(以下链接的底部)。

http://struts.apache.org/2.0.14/docs/ognl.html

可能目前最简单的解决方案是添加地图类:

 #@java.util.LinkedHashMap@{ "foo" : "foo value", "bar" : "bar value" } 

在此主题中找到: http : //struts.1045723.n5.nabble.com/s2-JSF-JSP-EL-vs-OGNL-EL-td3528303.html

有关JSP EL 2.1的信息,请参阅: http : //jcp.org/aboutJava/communityprocess/final/jsr245/index.html


您可能只是展示了这个问题,但只是为了确保,如果您提供列表而不是地图,则返回到服务器的值将与显示的值相同。 因此,以下内容生成相同的选择框,并且不会产生错误:

  headerValue="Please Select" emptyOption="false">  

我花了一点时间看看我是否可以在Netbeans 7中更改JSP EL版本但没有成功,还试图找到一种方法来禁用JSP EL错误检查而没有成功。 因此,如果必须在JSP中使用OGNL映射,请禁用JSP EL(对于某些人来说这不是一个有吸引力的选项),或者如图所示显式声明映射。