Struts2选择标签:必需与必需标签

时间:2016-10-28 14:17:01

标签: struts2 compatibility backwards-compatibility

我正在将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
基本上表明:

  1. AbstractUITag.setRequiredLabel ( String requiredLabel ) : void - 已添加。

  2. AbstractUITag.setRequired ( String required ) : void - 已被删除

  3. 现在,Select元素的docs,提到以下内容,requiredLabel被定义为如果设置为true,则渲染元素将指示输入是必需的 type Boolean。

    所以,我有点迷失在这里,我应该使用requiredLabel=true还是只删除required属性并在代码中验证?

2 个答案:

答案 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的其他区域的影响,并使类之间的工作尽可能保持一致,这也是值得的。