【问题标题】:How can I asynchronously show/hide div in JSP using Java如何使用 Java 在 JSP 中异步显示/隐藏 div
【发布时间】:2012-09-05 19:30:41
【问题描述】:

我想在渲染 JSP 时完成一些处理后以编程方式显示 div 标记。使用 Java 执行此操作的最佳方法是什么?使用 jQuery 我会这样做:

$('#mydiv').removeClass("hide_me");

...或...

$('#mydiv').show();

如何在呈现页面时在 Java 中以编程方式执行此操作?

【问题讨论】:

  • 什么意思?如果满足 bean 中的条件,则输出一些内联 Javascript?
  • 不太清楚你的意思;如果响应停止是因为您在 Java 中执行了不恰当的同步操作,那么响应就是停止响应,您无法继续响应修改 DOM。
  • 没有。我的 JSP 正在加载大量需要很长时间才能完成的数据。在 JSP 中,我隐藏了 div 标记,因为我不想在加载所有数据之前显示表格。因此,当 JSP 完成数据加载过程时,我只想取消隐藏 div 标签。
  • 您可以从 AJAX 调用中调用繁重的计算,然后在它准备好时显示它。
  • 使用 AJAX 和服务器端处理是我们下一个版本的计划。我现在正在寻找一个更简单的临时解决方案。

标签: java javascript jquery html jsp


【解决方案1】:

假设您拥有包括 JSTL 在内的标准 JSP 设置并将其映射到“c”,您可以这样做:

<c:if test="${myCondition}">
  <div id="mDiv">
    content
  </div>
</c:if>

从 cmets 看来,在服务器上呈现 JSP 与在浏览器中呈现内容之间存在一些混淆。 JSP 中发生的一切都是服务器端工作,必须在浏览器接收到生成的文档并开始绘制它之前完全完成。您不能使用 JSP 来更改已经在用户屏幕上的内容。为此,您需要 javascript、html5 等。

【讨论】:

  • 但是你可以使用 JSP 来输出 Javascript。我认为这就是布赖恩正在寻找的。​​span>
  • 这本来可以的,但我找到了另一个解决方案。我正在填充的表是一个 DataTable,因此我能够连接到 fnInitComplete 回调以在数据完全加载后显示 div 标记。感谢您的帮助和想法。
【解决方案2】:

使用 JSP,Java 在服务器上运行(与在浏览器中运行的 JavaScript 不同),因此在 JSP 中使用 Java if 语句有条件地呈现您的 &lt;DIV&gt;

<% if( test="true" ) { %>
  <DIV>....</DIV>
<% } %>

【讨论】:

  • JSTL 和 UEL 不鼓励使用 scriptlet 吗?
  • 随意改成 JSTL
【解决方案3】:

我认为您正在寻找这样的东西:

<div id="loader">Loading / GIF animation</div>
<div id="result" style="display:none;">
  Lots of data.
  Should be flushed to the browser every now and then.
  This will take seconds...
</div>
<script type="text/javascript">
  $("#loader").hide();
  $("#result").show();
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多