【问题标题】:call struts action from jquery - need help on how to make struts call and define struts action从 jquery 调用 struts 动作 - 需要有关如何使 struts 调用和定义 struts 动作的帮助
【发布时间】:2014-06-23 07:28:18
【问题描述】:

我对 struts 还很陌生,所以我需要为我缺乏理解而道歉。我正在尝试执行一个 struts 操作,该操作使用 jquery 对我的数据库进行更新,并且需要一些有关如何执行此操作的指导。我已经破解了它,但它不正确。

我的 jsp 中有一个 jquery 对话框(见下文)。您可以看到,单击此对话框中的按钮时,我调用了一个名为 myAjaxCall() 的函数...

<s:div id="dialog-form" title="Update" style="display:none">
<s:form id="dform" enctype="multipart/form-data" >
    <s:textfield  name="strid" id="strid" label="Store" readonly="true"  />
    <s:textfield  name="strName" id="strName" label="Store Name" readonly="true" />
    <s:textfield  name="businessDt" id="businessDt" label="Business Date" readonly="true"  />
    <s:textfield  name="openingtime" id="openingtime"  label="Opening time(EST)" />
    <s:textfield  name="closingtime" id="closingtime"  label="Closing time(EST)" />
    <s:textfield  name="reason" id="reason" label="Reason" />
    <s:url id="ajaxDialog" value="/storeCurrentStatusDialog.action"/>
    <table style="border:0"  >
     <tr>
      <td align="center"><input type="button" value="Update" onclick="myAjaxCall()"  ><br/></td>
     </tr>
    </table>
 </s:form>
</s:div>

然后我有一个名为 myAjaxCall() 的 jquery 函数,它看起来像这样。我告诉它使用 json 运行 ajax 函数。

function myAjaxCall() {
    var url="${pageContext.request.contextPath}/storeCurrentStatusDialog.action?strid="+document.dform.strid.value+"&closingtime="+document.dform.closingtime.value+"&openingtime="+document.dform.openingtime.value+"&businessDt="+document.dform.businessDt.value+"&reason="+document.dform.reason.value;

$.ajax({
    type: 'GET',
    url: url,
    dataType: 'json',
    success: function(data){
        console.log(stringify(data));
    }});

}

正确填充了 URL 变量,但没有调用我的 struts 操作。我的第一个问题是我发送的数据类型是 json。这会自动工作吗?我遇到的第二个问题是如何在 struts.xml 文件中定义我的 struts 操作以使其正常工作。像这样的东西?将返回成功。

    <action name="storeCurrentStatusDialog"
        class="com.mycompany.eposweb.action.StoreCurrentStatusAction"
        method="update">
        <result name="success" type="stream">
            <param name="contentType">text/html</param>
            <param name="inputName">inputStream</param>
        </result>
    </action>

谢谢

【问题讨论】:

  • 你如何检查一个动作没有被调用?还有你的行动课是什么?

标签: jquery struts2


【解决方案1】:

如果您以 json 格式发送数据,最好使用POST 方法并序列化您的表单,如下所示

$.ajax({
    type: 'POST',
    url: 'storeCurrentStatusDialog.action',
    dataType:'json',
    data:$('#dform').serialize(),
    contentType: "application/json; charset=utf-8",
    success: function(data){
        console.log(stringify(data));
    }});

您可以找到示例 Struts2 操作类和 XML 映射 HERE 用于 json

【讨论】:

  • 您能帮我解决一下如何在 xml 中取消我的 struts 动作吗?
  • 我认为上面的链接对你来说已经足够了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多