0

使用带有标准 struts 标签库的 jsp 的 struts2。

我正在尝试在页面加载时动态隐藏 DIV,但仍将其发送到浏览器。这样我以后可以通过 javascript 显示它。

请求对象 1 和 2 不容易通过 jsp:usebean 标记引用。(它们是枚举,无法实例化)我尝试使用 s:if 标签或 c:if 标签的组合,但它看起来很难看。

<%
    String displayStr = "display: none;";
    if(request.getAttribute("one") != null || request.getAttribute("two") != null  ) {
        displayStr = "display: block;";
    }
 %>

<div id="next" style="<%=displayStr %>">

有什么更好的方法来做到这一点的建议吗?

4

3 回答 3

0

使用 JSTL:

   <c:set var="displayStr" value="display:none"/>
   <c:if test="${!empty one || !empty two}">
        <c:set var="displayStr" value="display:block"/>
   </c:if>
   <div id="next" style="${displayStr}">
于 2010-05-05T19:12:22.100 回答
0

呃,伙计,那太丑了。让我吞下,给你一个替代方案......嗯......例如,你可以写:

<div id="next" 
  style="display:<s:if test="divVisible">block</s:if><s:else>none</s:else>">

或者也

<s:if test="divVisible">
  <s:set name="divStyle" value="%{'display:block'}"/>
</s:if>
<s:else>
  <s:set name="divStyle" value="%{'display:none'}"/>
</s:else>

<div id="next" style="<s: property value="#divStyle">">

然后在你的 Action 中提供一个isDivVisible()读取参数“one”和“two”的方法(不是来自httpRequest!)

于 2010-05-05T19:13:19.227 回答
0

只需在模板文本中使用纯 EL:

<div id="next" style="display: ${(!empty one || !empty two) ? 'block' : 'none'}">

十多年来,不鼓励使用小脚本。它们应该全部被标记库(Struts2、JSTL 等)和 EL 替换。只要这是不可能的,那么代码逻辑几乎肯定属于真正的 Java 类,如模型对象、servlet(或 Struts2 动作)等。

于 2010-05-05T23:28:05.000 回答