JSP集成Struts2时s:url标签提示TLD中id属性无效如何解决
错误原因
Struts2 2.1及更高版本中,<s:url>标签的id属性已被官方废弃移除,TLD(标签库描述符)中已经不存在该属性的定义,所以使用id属性会直接触发校验报错。同时你代码中使用了indexFR变量,但未提前定义对应的<s:url>,后续还会触发变量未找到的运行时异常。
解决方案
- 将所有
<s:url>标签的id属性统一替换为官方指定的var属性,二者作用完全一致,都是用于存储生成的URL路径到指定变量中 - 补充
indexFR对应的<s:url>定义
修正后完整代码
<s:url var = "indexEN" namespace="/" action = "locale" > <s:param name = "request_locale" >en</s:param> </s:url> <s:url var = "indexES" namespace="/" action = "locale" > <s:param name = "request_locale" >es</s:param> </s:url> <!-- 补充法语对应的url定义 --> <s:url var = "indexFR" namespace="/" action = "locale" > <s:param name = "request_locale" >fr</s:param> </s:url> <s:a href="%{indexEN}" >English</s:a> <s:a href="%{indexES}" >Spanish</s:a> <s:a href="%{indexFR}" >France</s:a>
修改完成后重新部署项目即可消除报错。
内容的提问来源于stack exchange,提问作者Danny me
相关产品推荐
相关产品推荐

