0

我正在重构现有的 Web 应用程序以使用 struts 标签而不是 scriptlet。多次发生的事情之一是条件检查,例如

<%if ("true".equals(requset.getparameter("someParam"))) {%>

some html, javascript

<%else{%>
some other html,javascript
<%}%>

我希望用 struts 逻辑标记替换它来替换 scriptlet。是否可以在不将 someParam 存储在 formbean 中的情况下做到这一点?默认情况下,逻辑标签的语法似乎只适用于 formbean 参数。

4

1 回答 1

1

虽然不是特定于 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 逻辑自定义标记访问该属性。

于 2011-02-16T02:50:53.163 回答