将Struts2与JSP与标准支撑库库一起使用。

我正在尝试在页面加载上动态隐藏DIV,但仍将其发送到浏览器。因此,我可以稍后通过JavaScript显示。

请求对象不容易通过JSP:USEBEAN标签引用。 (它们是枚举,无法实例化)我尝试使用s的组合:如果标签或c:如果标签,它看起来很丑陋。

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

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

有帮助吗?

解决方案

使用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}">

其他提示

嗯,伙计,这很丑陋。让我吞咽,给你一个替代……嗯...例如,你可以写:

<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">">

然后在您的行动中提供 isDivVisible() 读取参数“一个”和“两个”的方法(不是来自httprequest!)

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

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

用于 脚本 自十多年以来一直灰心。它们都应全部被Taglibs(Struts2,JSTL等)和EL取代。每当不可能的情况下,代码逻辑几乎可以肯定属于真实的Java类,例如模型对象,servlet(或Struts2操作),等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top