Struts2 Select 标签:必需与必需标签

Struts2 Select tag : required vs. requiredLabel

我正在将 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 - 已删除

现在,Select元素的docs,提到下面,requiredLabel被定义为如果设置为true,呈现的元素将指示需要输入 类型的布尔值。

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

setRequiredLabel 似乎与setRequired 具有相同的方法签名,请保存方法名称。考虑到手动编写验证代码可能会花费更多时间,并且可能比使用 setRequiredLabel 效率更低,使用 setRequiredLabel 可能是一个不错的选择,而不是重新发明轮子。

考虑此版本对代码中可能使用 setRequired 的其他区域的影响可能也值得,并尽可能保持 类 之间的工作一致。

requiredLabel 属性将生成一个 * 以在视觉上呈现该字段是必填字段。

The attribute was called required in old versions of the tags,但随后 HTML5 规范出现了 required 属性,它与星号无关,而是指示浏览器不允许提交这些字段为空的表单,因此新版本的标签必须更改它才能使用 HTML5 版本,同时保持星号功能可用,只是在另一个名称下:requiredLabel .

您唯一需要的操作是:

find every occurrence of required="true", replace it with requiredLabel="true".

建议的操作是:

find every occurrence of required="true",

replace it with requiredLabel="true" required="required"

,所以你会得到两全其美。

还要注意无用但可能存在的 required="false" 事件。