0

私の ajax 生成フォームの targets 属性が機能していないようです。このフォームからもトピックを公開できないようです。次のページがあります。

<!Doctype html, taglibs, etc here !-->
    <html>
    <head>
    <s:head theme="css_xhtml" />
    <sj:head jqueryui="true" />
    <script type="text/javascript">
        $.subscribe('testtopic', function(event, data) {
            alert('testtopic Published!');
        });
    </script>
    <title>Exam CRUD</title>
    </head>
    <s:url namespace="/exam" action="ReadAll" var="readExamsTag" />
    <body>
        <s:include value="/WEB-INF/content/navigation.jsp" />
        <h2>Exam CRUD</h2>
        <sj:div id="formcontainer"></sj:div>
        <sj:div id="tablecontainer" loadingText="Loading.."
            reloadTopics="reloadTable" href="%{readExamsTag}">
        </sj:div>
    </body>
    </html>

ReadAll は、次の jsp を「tablecontainer」div にロードします。

<s:url namespace="/exam" action="CreateForm" var="createFormTag" />
<p>
    Listed below are the exams currently available to students.
    <sj:a href="%{createFormTag}" targets="formcontainer">Add an exam</sj:a>
    <!The above anchor works perfectly fine. It loads the form into the div as expeceted>
</p>
<table>
    <! Table contents over here >
</table>

%{createFormTag} によって onclick の "formcontainer" に読み込まれるフォーム:

<sj:head />

<s:form  theme="css_xhtml" namespace="/exam" action="Create">
    <!Form fields>
    <input type="button" value="Cancel" onclick="$('#formcontainer').empty();">
    <sj:submit targets="formcontainer" onCompleteTopics="reloadTable" value="Add" />
</s:form>

<sj:a href="#" onClickTopics="testtopic">Test</sj:a>

私が直面している問題は、上記の形から来ています。このフォームを送信すると、結果が新しいページに読み込まれます。トピックを公開できるかどうかもテストしたかったので、フォームの最後にアンカーを追加しました。フォームがページにロードされたときにこのアンカーをクリックしても、何も起こりません。「キャンセル」ボタンは正常に機能しているようで、このフォームをロードする最初のアンカーも正常に機能しているため、フォームが機能しないのはなぜですか?

編集:修正しました..

css_xhtml テンプレートと関係があるはずです。フォームに id 属性を追加して、targets 属性を修正しました。

パブリッシングの修正に関しては、フォームの datepicker フィールドに id 属性を追加したところ、すべてが完璧に機能するようになりました。奇妙な..最終的なコード:crud.jsp:

 <!DOCTYPE html>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <html>
    <head>
    <s:head theme="css_xhtml" />
    <sj:head jqueryui="true"/>
    <title>Exam CRUD</title>
    </head>
    <s:url namespace="/exam" action="ReadAll" var="readExamsTag" />
    <body>
        <s:include value="/WEB-INF/content/navigation.jsp" />
        <h2>Exam CRUD</h2>
        <sj:div id="formcontainer"></sj:div>
        <sj:div id="tablecontainer" loadingText="Loading.."
            reloadTopics="reloadTable" href="%{readExamsTag}">
        </sj:div>
    </body>
    </html>

add.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"%>

<s:form id="addform" theme="css_xhtml" namespace="/exam" action="Create">
    <s:textfield name="exam.name" label="Name" required="true" />
    <s:textfield name="exam.author" label="Author" />
    <s:textfield name="exam.minutesAllotted" label="Time limit"
        required="true" />
    <sj:datepicker id="startingDate" name="exam.startingDate"
        label="Start date" timepicker="true" readonly="true"
        displayFormat="dd/mm/yy" changeMonth="true" changeYear="true"
        minDate="-0d" maxDate="+2y" />
    <sj:datepicker id="endingDate" name="exam.endingDate" label="End date"
        timepicker="true" displayFormat="dd/mm/yy" changeMonth="true"
        changeYear="true" readonly="true" minDate="-0d" maxDate="+2y" />

    <input type="button" value="Cancel"
        onclick="$('#formcontainer').empty();">
    <sj:submit targets="formcontainer" value="Add" />
</s:form>

2 番目の jsp で何も変更する必要はありませんでした。

4

1 に答える 1

1

< sj:head /> を 1 回だけ含めます。– アレクサンドル M

于 2015-02-03T09:52:36.300 に答える