我正在将struts2(核心)从2.1.8.1升级到2.3.31并出现以下问题:升级所有jar,编译应用程序,运行它并访问页面后,我收到以下错误:
java.lang.NoSuchMethodError:org / apache / struts2 / views / jsp / ui / SelectTag.setRequired(Ljava / lang / String;)V
所以我做了一点挖掘并找到以下报告:Source compatibility report for the struts2-core library between 2.3.8 and 2.3.12 versions
基本上表明:
AbstractUITag.setRequiredLabel ( String requiredLabel ) : void
- 已添加。
AbstractUITag.setRequired ( String required ) : void
- 已被删除
现在,Select元素的docs,提到以下内容,requiredLabel
被定义为如果设置为true,则渲染元素将指示输入是必需的 type Boolean。
所以,我有点迷失在这里,我应该使用requiredLabel=true
还是只删除required
属性并在代码中验证?
答案 0 :(得分:2)
requiredLabel
属性将生成*
以直观呈现该字段是必填字段。
https://github.com/andr83/scalaconfig,但HTML5规范出现了required
属性,与星号无关,而是指示浏览器不允许提交带有这些字段为空的表单,因此,新版本的标签必须更改它才能使用HTML5版本,同时保持星号功能可用,只需使用其他名称:requiredLabel
。
您唯一的需要操作是:
查找
required="true"
的每次出现,将其替换为requiredLabel="true"
。
建议的操作是:
查找
required="true"
的每次出现,将其替换为
requiredLabel="true" required="required"
,这样你就可以获得两全其美的效果。
同时注意无用但可能存在required="false"
次发现。
答案 1 :(得分:-1)
setRequiredLabel似乎与setRequired具有相同的方法签名,保存方法名称。考虑到手动编写验证代码可能需要更多时间并且可能比使用setRequiredLabel效率低的事实,使用setRequiredLabel而不是重新发明轮子可能是一个不错的选择。
考虑到此版本对代码中可能使用setRequired的其他区域的影响,并使类之间的工作尽可能保持一致,这也是值得的。