我正在重构现有的Web应用程序以使用struts标记而不是scriptlet。发生多重关系的事情之一是条件检查,如
<%if ("true".equals(requset.getparameter("someParam"))) {%>
some html, javascript
<%else{%>
some other html,javascript
<%}%>
我希望用struts逻辑标记替换它来替换scriptlet。是否可以在不将forParam存储在formbean中的情况下执行此操作?默认情况下,逻辑标记的语法似乎只适用于formbean参数。
答案 0 :(得分: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逻辑自定义标记访问。