Weblogic 10下JSP el与ognl的问题与解决方法

 在使用Webwork或Struts2标签写JSP时,经常会用到如下写法:

<ww:radio name="gender" list='#{"1":"Male", "2":"FeMale"}' />
<ww:select name="yes" list='#{"1":"YES","2":"NO"}' />

这是ognl的写法,list里的表达式将解释成成一个Map,实际上是一个LinkedHashMap。

 

这种写法在Tomat下部署是没有任何问题的,但部署到Weblogic 10下问题就来了,这里web.xml的version声明为2.4,编译JSP时报表达式错误。如果声明为2.3是不会报错的,因为servlet 2.3(即jsp 1.2)是不支持EL的,使用Weblogic 9同样也不会报错。据此可以推测原因为编译JSP时Weblogic  JSP编译器将OGNL的表达式误认为是EL表达式。

 

 解决办法:

1、禁用EL。在web.xml上加上

<jsp-config>
    <jsp-property-group> 
      <url-pattern>*.jsp</url-pattern> 
      <el-ignored>true</el-ignored> 
    </jsp-property-group> 
</jsp-config>

 2、更改web.xml的version为2.3。

 3、因为大量页面用到EL,如${someValue},所以1和2基本行不通的,所以从OGNL的表达式入手,最终写成list='#@java.util.LinkedHashMap@{"1":"Male","2":"FeMale"}' , 显式指定使用LinkedHashMap来构建Map。问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值