如何将Struts的bean:define标签转换为Spring或JSTL标签?
解决Struts
<bean:define>转JSTL/Spring标签的问题 原Struts代码的作用是从form对象的user2属性取值,强制转换为document.result类型后,赋值给名为user的变量:
<bean:define id="user" name="form" property="user2" type="document.result" />
因为JSTL的<c:set>没有type属性,没法直接指定类型转换,给你几个可行的解决办法:
1. EL显式类型转换配合<c:set>
在EL表达式里直接做强制类型转换,再赋值给变量,效果和原标签一致:
<c:set var="user" value="${(document.result) form.user2}" />
如果form.user2无法转成document.result,同样会抛出类型转换异常,和原Struts标签的行为相同。
2. 后端提前处理类型转换
更符合MVC分层逻辑的做法是在Java代码层处理转换,比如在Form类里加一个专门的getter方法:
public document.result getConvertedUser2() { return (document.result) this.user2; }
然后JSP里直接用这个新的getter:
<c:set var="user" value="${form.convertedUser2}" />
3. 用Spring的<spring:eval>标签(如果项目用Spring)
Spring的<spring:eval>标签支持type属性,完全可以替代原Struts标签的功能:
<spring:eval expression="form.user2" var="user" type="document.result" />
内容的提问来源于stack exchange,提问作者Data Set
相关产品推荐
相关产品推荐

