更新选择更改Struts2上的表单

时间:2014-07-17 12:41:52

标签: javascript html jsp struts2 struts2-jquery

我在表单外面选择了tag,在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>

1 个答案:

答案 0 :(得分:1)

我只是告诉你,你做错了什么,因为很多问题都发布在同一主题上。常见的错误是将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内容。