虽然不是特定于 struts 的解决方案:您是否考虑过使用 JSTL 自定义标签?这些标签包含在最新的 Web 容器规范中,并且可以轻松添加到默认情况下不包含 JSTL 规范的旧 Web 容器。
下面是一个基于 JSTL 的解决方案:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
...
<c:choose>
<c:when test="${param.someParam eq 'true'}">
some html, javascript
</c:when>
<c:otherwise>
some other html, javascript
</c:otherwise>
</c:choose>
除非您使用 struts 自定义标签来生成您的 UI 组件,否则总是首选使用 JSTL 标准标签。但是,如果您打算使用 struts,下面是 Struts 1 的示例:
<bean:parameter id="paramValue" name="someParam" />
<logic:equal name="paramValue" value="true">
some html, javascript
</logic:equal>
<logic:notEqual name="paramValue" value="true">
some other html, javascript
</logic:notEqual>
您会注意到,此解决方案采用请求参数并将其放入页面范围属性(paramValue)中,然后可以通过 struts 逻辑自定义标记访问该属性。