gpt4 book ai didi

java - spring form taglib disabled 属性真的必须解析为字符串吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:36 25 4
gpt4 key购买 nike

我最近一直在使用 spring form taglib,遇到了一个相当令人不安的现象。

<form:select path="whatever" disabled="${true}">

将呈现未禁用的选择元素

<form:select path="whatever" disabled="${'true'}">

将呈现一个被禁用的选择元素。

这向我表明标签需要该属性中的字符串并且拒绝强制转换任何 boolean 值(可能首先检查类型)。

影响是我无法执行类似 <form:select path="whatever" disabled="${someOtherfield.selectedId != -1}" /> 的操作这是我们系统中经常发生的事情。

我是否只是遗漏了表单标签库功能的某些部分?这是一个合法的设计决定吗?缺陷?

最佳答案

好吧,我围绕这个做了更多的挖掘,因为变通办法看起来太难看了。

http://forum.springsource.org/showthread.php?t=84102

问题在于 JSP 正在评估 el,并盲目地使用“true”.equals 比较该评估的结果

使用该方法将字符串与 boolean 值进行比较将始终返回 false,因为类型不匹配,因此这绝对是一个缺陷。

幸运的是,错误的 isDisabled 方法是一个 protected one liner,因此我能够通过扩展 8 输入标签的影响并覆盖该方法来进行稍微更稳健的比较来解决这个问题。

所以答案是,是的,这是一个缺陷,而且从 skaffman 的评论来看,这似乎是一个问题,旧库在实现 JSP EL 时没有得到很好的更新。

谢谢大家的回答

关于java - spring form taglib disabled 属性真的必须解析为字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2187851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com