2

我正在使用 struts2 和 jquery 插件构建一个 Web 应用程序。我正在尝试使用 jquery 插件中包含的“指标”功能。实际上,当用户执行某些操作(按钮单击,列表选择...)时,我想触发一个弹出窗口,说“正在加载...”。

所以我有这个母版页 MasterPage.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>  
<head>
<s:url id="customTheme" value="/template/themes" ></s:url>
<sj:head defaultIndicator="indictor" jqueryui="true" jquerytheme="warrtheme" customBasepath="%{customTheme}" />
</head>
<body>

<sj:dialog id="indicator"
           title="Loading"
           autoOpen="false"
           modal="true"
           resizable="false">
<table>
    <tr>
        <td>&nbsp;</td>
        <td><img src="<s:url value="/images/indicator.gif" />" /></td>
        <td>Loading...</td>
    </tr>
</table>
</sj:dialog>
</body>
</html>

我有这个常规页面 User.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

<div class="content">
    <s:url var="openViewUser" namespace="/administration" action="administration_utilisateur_open" />
    <sj:a href="%{openViewUser}" id="divUserLink" targets="divUser" indicator="indicator">

    <div id="divUser"></div>
</div>

当我点击上面代码中的链接时,弹出窗口没有出现。有什么线索吗?

提前致谢。

4

2 回答 2

1

我想发布适合我的完整代码......

在 MasterPage.jsp 上:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>  
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<s:url id="customTheme" value="/template/themes" ></s:url>
<sj:head jqueryui="true" jquerytheme="warrtheme" customBasepath="%{customTheme}" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<script type="text/javascript">
$.subscribe('onBeforeLoading', function(event,data) {
    $("#indicator").dialog('open');   
}); 

$.subscribe('onCompleteLoading', function(event,data) {  
    $("#indicator").dialog('close');   
}); 
</script>
</head>

<body>

<sj:dialog id="indicator"
       title="Warning"
       autoOpen="false"
       modal="true"
       resizable="false">
<table>
    <tr>
        <td>&nbsp;</td>
        <td><img src="<s:url value="/images/indicator.gif" />" /></td>
        <td>Loading, please wait...</td>
    </tr>
</table>
</sj:dialog>

</body>
</html>

在 User.jsp 上:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

<div class="content">
    <s:url var="openViewUser" namespace="/administration" action="administration_utilisateur_open" />
    <sj:a href="%{openViewUser}" id="divUserLink" targets="divUser" onBeforeTopics="onBeforeLoading" onCompleteTopics="onCompleteLoading" >Click me</sj:a>
    <br/>
    <br/>
    <div id="divUser"></div>
</div>
于 2013-02-04T08:58:46.543 回答
0

你必须订阅打开的主题或者你必须捕获onclick事件。假设你想在点击时显示对话框

   function openDialog() 
    {
        $("#indicator").dialog('open');
    }

成功加载 ajax 后,使用此关闭对话框

$("#indicator").dialog('close'); 
于 2013-02-04T07:49:44.253 回答