<s:select
name="PenaltyPercentage"
id="PenaltyPercentageId"
list="#{'7.5%':'7.5%', '15.0%':'15.0%'}" <!-- shows error in this line -->
headerKey=""
headerValue="Please Select"
emptyOption="false">
</s:select>
错误消息如下所示
Encountered ":" at line 1, column 9.
Was expecting one of:
"}" ...
"." ...
"]" ...
">" ...
"<" ...
答案 0 :(得分:6)
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
您可能只是展示了这个问题,但只是为了确保,如果您提供列表而不是地图,则返回服务器的值将与显示的值相同。因此,以下内容生成相同的选择框,不会产生错误:
<s:select
list="{'7.5%','15.0%'}" <!-- does not show error -->
headerValue="Please Select"
emptyOption="false">
</s:select>
我花了一点时间看看我是否可以在Netbeans 7中更改JSP EL版本但没有成功,还试图找到一种方法来禁用JSP EL错误检查而没有成功。因此,如果您必须在JSP中使用OGNL映射,请禁用JSP EL(对于某些人来说这不是一个有吸引力的选项),或者如图所示显式声明地图。