未在struts2 jquery tabbedpannel标记中加载struts2 jquery日期选择器标记

struts2-jquery datepicker tag not loading in struts2-jquery tabbedpannel tag

本文关键字:jquery struts2 日期 选择器 加载 未在 tabbedpannel      更新时间:2023-09-26

我有一个页面index.jsp,我在这个jsp中使用了struts2 jquery tabbedpannel标记来显示另外两个jsp(first.jspsecond.jsp)作为选项卡。

index.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"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                      "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<sj:head />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Index Page</title>
</head>
<body>
    <sj:tabbedpanel 
        id="remotetabs" 
        selectedTab="0" 
        show="true" 
        hide="'fade'" 
        collapsible="true" 
        sortable="true">
            <sj:tab id="tab1" href="first.jsp" label="First JSP"/>
            <sj:tab id="tab2" href="second.jsp" label="Second JSP"/>
    </sj:tabbedpanel>
</body>
</html>

另外两个JSP包含一个表单,每个表单都带有struts2日期选择器标记。这是其中一个。。。

first.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"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                      "http://www.w3.org/TR/html4/loose.dtd">
<html>
<link rel="stylesheet" type="text/css" href="css/view.css" media="all">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>First JSP</title>
</head>

<body>
    <div>
    <s:form action="firstAction" >
            <sj:datepicker 
                key="timeStamp" 
                name="timeStamp"  
                label="Time Stamp" 
                timepicker="true" 
                displayFormat="yy-mm-dd" 
                timepickerFormat="HH:mm"/>
            <s:submit value="Submit"></s:submit>
    </s:form>
    </div>
</body>
</html>

问题是,第一次加载index.jsp时,first.jsp上的struts2 jquery datepicker标记工作正常,但当我切换到第二个选项卡时;它将在AJAX中加载second.jsp(second.jsp包含与first.jsp相同的代码)struts2 second.jsp上的jquery日期选择器标记不起作用。

现在,当我切换回第一个选项卡以显示first.jsp时,struts2 jquery datepicker标记也不起作用。它只是在第一次加载后停止工作。

问题是您正在调用JSP页面,而您应该调用Struts2 Actions。

Struts2是MVC。您不应该从视图调用视图,而是应该调用将调度到视图的控制器。

第一次,它起作用是因为在first.jspsecond.jsp中提供struts和struts jquery标签的变量取自IndexAction

您应该定义FirstActionSecondAction,并通过href属性中的AJAX调用它们:

<s:url var="firstActionUrl" action="first" namespace="/" />
<sj:tab id="tab1" href="%{#firstActionUrl}" label="First JSP"/>
<s:url var="secondActionUrl" action="second" namespace="/" />
<sj:tab id="tab2" href="%{#secondActionUrl}" label="Second JSP"/>