Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Struts 1.3的Jquery模态表单_Jquery_Ajax_Modal Dialog_Struts 1 - Fatal编程技术网

使用Struts 1.3的Jquery模态表单

使用Struts 1.3的Jquery模态表单,jquery,ajax,modal-dialog,struts-1,Jquery,Ajax,Modal Dialog,Struts 1,我正在为一个类项目使用Struts 1.3构建一个web应用程序,我在Struts 1.x的AJAX兼容性方面遇到了一些问题(我听说2.x与AJAX和jQuery的兼容性要好得多) 感谢您的回复,这是更新的问题: 我目前正在同一个jsp中使用jQueryUI模式表单,并希望在用户使用AJAX按下“创建新场所”时将表单数据发送到Struts操作。如何在表单和Struts操作之间发送(和检索)数据 换句话说,以下各项之间的联系: "Create new venue": function() { $.

我正在为一个类项目使用Struts 1.3构建一个web应用程序,我在Struts 1.x的AJAX兼容性方面遇到了一些问题(我听说2.x与AJAX和jQuery的兼容性要好得多)

感谢您的回复,这是更新的问题:

我目前正在同一个jsp中使用jQueryUI模式表单,并希望在用户使用AJAX按下“创建新场所”时将表单数据发送到Struts操作。如何在表单和Struts操作之间发送(和检索)数据

换句话说,以下各项之间的联系:

"Create new venue": function() {
$.ajax({
    url: "/registered/insertVenue.do",
    data: 
});
(这是模态表单的sumbit按钮的代码,我不知道如何以Struts操作可读的方式附加数据)

Struts操作的“execute”方法(返回ActionForward或null)


再次感谢!:)

从原始JavaScript/jQuery/Ajax的角度来看,支持框架实际上没有多大区别

您可以从Struts 1操作返回您想要的任何内容。如果您想要返回一些JSON,比如状态或Flash消息,您可以直接将其写入响应并返回
null
,而不是
ActionForward
,或者制作一个JSP以包含您想要的内容并设置适当的头


如何处理Ajax请求的返回值完全取决于客户端代码:Struts 1不关心它是什么类型的请求;它只会吐回任何配置为吐回的数据。

一件事,如果要在
ActionForward
之外返回数据,必须
返回null
。当Struts看到null
ActionForward
时,它不会执行forward

完成后,我使用以下类型设计在Struts中创建JSON响应:

public interface Result {

    public void applyResult(HttpServletRequest request, HttpServletResponse response) throws Exception;
}


public abstract class ResultBasedAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Result result = execute(mapping, form, request);
        if (result == null) {
            throw new Exception("Result expected.");
        }

        result.applyResult(request, response);
        //Finally, we don't want Struts to execute the forward
        return null;
    }

    public abstract Result execute(ActionMapping mapping, ActionForm form, HttpServletRequest request) throws Exception;
}


public class JsonResult implements Result {

    private JSONObject json;

    public JsonResult(JSONObject json) {
        this.json = json;
    }

    public void applyResult(HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.addHeader("Content-Type", "application/json");
        response.getOutputStream().write(json.toString().getBytes("UTF-8"));
        response.getOutputStream().flush();
    }
}
所有与AJAX相关的响应都将为操作实现
ResultBasedAction
,为要发送到客户端的数据实现
Result


在ajax上,您只需执行HTTP
GET
,在URL上传递所有参数。确保参数与所需的
Action
类的Struts
ActionForm
匹配。

什么类让您使用Struts 1?!是的,我知道,太可怕了!我将向我的TA:P展示你的评论(我是一个提交者……但是Struts 1已经过时了,这使得创建现代的、可测试的软件变得非常困难。)非常感谢你的回复!(同意,尽管我确实已经说了空位。)例如+1。谢谢!你们太棒了!好的,遇到了另一个问题:当我尝试使用GET发送AJAX,并在URL中添加所有参数时,我得到404找不到用于该操作的参数,原因可能是什么?@Nicolay,您必须创建一个新的SO问题。评论不会有帮助,因为需要大量的信息(这些信息不适合评论)。谢谢!新问题: