使用Struts 1.3的Jquery模态表单
我正在为一个类项目使用Struts 1.3构建一个web应用程序,我在Struts 1.x的AJAX兼容性方面遇到了一些问题(我听说2.x与AJAX和jQuery的兼容性要好得多) 感谢您的回复,这是更新的问题: 我目前正在同一个jsp中使用jQueryUI模式表单,并希望在用户使用AJAX按下“创建新场所”时将表单数据发送到Struts操作。如何在表单和Struts操作之间发送(和检索)数据 换句话说,以下各项之间的联系:使用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() { $.
"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看到nullActionForward
时,它不会执行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
类的StrutsActionForm
匹配。什么类让您使用Struts 1?!是的,我知道,太可怕了!我将向我的TA:P展示你的评论(我是一个提交者……但是Struts 1已经过时了,这使得创建现代的、可测试的软件变得非常困难。)非常感谢你的回复!(同意,尽管我确实已经说了空位。)例如+1。谢谢!你们太棒了!好的,遇到了另一个问题:当我尝试使用GET发送AJAX,并在URL中添加所有参数时,我得到404找不到用于该操作的参数,原因可能是什么?@Nicolay,您必须创建一个新的SO问题。评论不会有帮助,因为需要大量的信息(这些信息不适合评论)。谢谢!新问题: