The*_*rav 6 java spring jsp spring-mvc
我最近一直在使用弹簧形式的taglib,并且遇到了一个相当令人不安的现象.
<form:select path="whatever" disabled="${true}">
Run Code Online (Sandbox Code Playgroud)
将呈现未禁用的select元素
<form:select path="whatever" disabled="${'true'}">
Run Code Online (Sandbox Code Playgroud)
将呈现禁用的select元素.
这向我表明标签需要该属性中的字符串并且拒绝强制任何布尔值(可能首先检查类型).
影响是我无法做出类似于<form:select path="whatever" disabled="${someOtherfield.selectedId != -1}" />我们系统中经常发生的事情.
我只是错过了表单taglibs功能的一部分吗?这是一个合法的设计决定吗?缺陷?
好吧,我做了一些更多关于这个,因为解决方案看起来太难看了.
http://forum.springsource.org/showthread.php?t=84102
问题是JSP正在评估el,并盲目地使用"true".equals比较评估结果
使用该方法将String与布尔值进行比较将始终返回false,因为类型不匹配,因此它肯定是一个缺陷.
幸运的是,故障中的isDisabled方法是一个受保护的单线程,因此我已经能够通过扩展8输入标记的影响并覆盖该方法来进行稍微更稳健的比较.
所以答案是,是的,这是一个缺陷,并且从skaffman的评论看起来,当JSP EL实现时,旧库没有很好地更新是一个问题.
谢谢你的答案
| 归档时间: |
|
| 查看次数: |
11632 次 |
| 最近记录: |