0

strutsフォームを含むstruts2アクションを呼び出すモーダルstruts 2 jqueryダイアログを備えたホームページがあります。

ホームページ ダイアログ コード

<s:url id="newItemURL" var="newItemURL" action="addNewItem" />
<sj:dialog id="newItem" href="%{newItemURL}" title="Create New Item" width="700" position="top" autoOpen="false"
                        loadingText="Loading..." />
<sj:a id="addNewItem" openDialog="newItem" button="true" buttonIcon="ui-icon-refresh">New Item</sj:a>

addNewItem アクション 結果 JSP
このフォームが送信され、成功するとテキスト結果が生成されます。

   <div id="newItemForm">
        <s:form action="addNewItem" id="addNewItem">
            <fieldset>
            <legend>Create a new item</legend>
            <label for="description">Description: </label>
                <s:textarea id="description" name="item.description" label="Description:" cols="20" rows="5"/><br />
                <sj:submit id="submitNewItem" targets="resultNewItem" value="Submit" indicator="indicator" button="true" replaceTarget="true" />
            </fieldset> 
        </s:form>
    </div>
    <div id="resultNewItem"></div>

addNewItem フォームは<sj:head />、AJAX の結果が resultNewItem div に表示され、スタンドアロンで正常に動作します。<sj:head />ホームページとの競合を避けるために、addNewItem JSP で削除する必要があります。

問題は、フォームの送信時に addNewItem アクションがダイアログの一部として含まれている場合に、ホームページ アクションが呼び出され、その結果、ダイアログ内に別のホームページが表示されることです。

どうすればこれを解決できますか?

編集:

Struts 構成

    <action name="homepage"
        class="com.actions.Homepage">
        <result name="success" type="tiles">Homepage</result>
    </action>

    <action name="AddNewItem" class='com.actions.AddNewItem'> 
        <result name="success">/WEB-INF/jsp/addNewRisk/addNewRisk.jsp</result>
    </action>

    <action name="smoAddNewRiskINSERT" class="com.actions.AddNewItem" method="addNewRisk"> 
        <result name="success">/WEB-INF/jsp/addNewRisk/success.jsp</result>
        <result name="error">/WEB-INF/jsp/addNewRisk/error.jsp</result>
    </action>

達成したいこと ユーザーがボタンをクリックしてダイアログをロードし、addNewItem フォームが作成され (AddNewItem アクション)、ユーザーがフォームを送信すると、AJAX 送信ボタンを介して送信され、結果がダイアログ内に表示されます。

4

1 に答える 1

0

まず、要素に一意の ID を付けます。クインシーのコメントで指摘されているように。次に、struts.xml ファイルでアクション名をaddNewItemではなく に変更しますAddNewItem

于 2012-12-04T13:25:11.223 に答える