簡體   English   中英

在選擇更改Struts2上更新表單

[英]Update the form on select change Struts2

我在表單外有select標簽,在select的onchange事件中,我發布了anchor標簽的listenTopics並在json中得到了結果,這是正確的,但它用json數據替換了表單,我需要更新表單。 任何想法這里可能有什么問題,或者有其他方法可以做到這一點。

<script type="text/javascript">
    function reloadForm() {
        $.publish('reloadFormList');
    }
</script>

<div id="body" style="text-align: center;width: 100%;">
    <s:form id="formSelect" style="margin-top:20px;">
        <s:select list="model.classList" name="model.selectedID" 
                  listKey="classID" listValue="className" headerKey="-1" 
                  headerValue="" theme="simple" label="Class" 
                  style="margin-bottom:10px;" onchange="reloadForm();" />
        <sj:a formIds="formSelect" href="getEmailSett" targets="form"
              style="display:none;" listenTopics="reloadFormList"></sj:a>
    </s:form>

    <s:form id="form">
        <s:checkbox label="OPtion1" title="OPtion1" name="model.chk_option1"
                    style="margin-top:20px;"></s:checkbox>
        <s:checkbox label="OPtion2" title="OPtion2" name="model.chk_option2" 
                    style="margin-top:20px;"></s:checkbox>
        <sj:submit id="formSubmit" href="mysubmit" value="Update"
                   indicator="indicator" button="true" />
    </s:form>
</div>

我只是告訴你你在做什么錯,因為有很多關於同一主題的問題。 一個常見的錯誤是將targets用於json結果。 應該使用targets加載html / javascript內容。 如果要處理json結果,則不應編寫此類丑陋的代碼

<sj:a formIds="formSelect" href="getEmailSett" targets="form"
          style="display:none;" listenTopics="reloadFormList"></sj:a>

reloadForm()您應該通過$.ajax()$.getJSON()以及在用於修改DOM的回調成功函數中編寫一個普通的ajax調用。

如果仍繼續使用targets ,則應將觸發操作的結果更改為dispatcher以返回html / javascript內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM