Struts2 +Jquery 在Action里边的方法执行问题! 急啊!!!!弄了大半天了!

puton 2008-07-19 04:02:26
我就在struts2.0下做一个简单的Ajax功能 结果struts2老是先去执行execute方法
在网上看了好多例子 可没解决我的问题 唉 谁来棒棒忙啊

先谢过 88分献上
代码如下


index.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ include file="/Preamble.jspf" %>
<html>
<head>
<title></title>
</head>

<body>

<hr>
<s:form action="searchAcc" method="get">
<table align="center" class="table02">

<tr>
<td class="content_L" width="40%">子公司代號:</td>
<td width="60%"><input type="text" id="company_no" name="company_no"/></td>
</tr>
<tr>
<td class="content_L">分行代號:</td>
<td><input type="text" name="bank_id" id="bank_id"/></td>
</tr>
<tr>
<td class="content_L">廠商代號:</td>
<td><input type="text" id="factory_id" name="factory_id"/></td>
</tr>
<tr>
<td id="label"></td>
<td class="text_R">
<s:submit value="%{getText('text.confirm')}" onclick="confirmData()" cssClass="f_btn01"/>
<s:reset cssClass="f_btn01" value="%{getText('text.reset')}"/></td>
</tr>

</table>
</s:form>
</body>
<script type="text/javascript">
function confirmData(){
var com=$("#company_no");
var bank=$("#bank_id");
var factory=$("#factory_id");alert(com.val());
$.get("searchAcc!ajax.action", { company_no: "56757", bank_id:"777",factory_id:"6666" },
function(data){
alert("Data Loaded: " + data);
});

if(data){
$("#label").text("無此驗收單!");
$("#label").attr("class","overdue");
}
alert(2)
return data;
}
</script>
</html>






Action 代码
package com.plat.acc.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;

import util.BeanUtil;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.plat.acc.proxy.AcceptenceProxy;


public class SearchAccAction extends ActionSupport{
private static final Log log = LogFactory.getLog(SearchAccAction.class);
private String company_no;//能传到页面
private Integer bank_id;
private Integer factory_id;

/**
*处理用户请求的excute()方法
*@return结果导航字符串
*@throws Exception
*/
public String execute() throws Exception{
return SUCCESS;
}

public void ajax(){

PrintWriter pw = null;
HttpServletResponse response = ServletActionContext.getResponse(); //取response对象
try {
response.setContentType("text/xml;charset=utf-8");
response.setHeader("Cache-Control","no-cache");


/*AcceptenceProxy proxy=(AcceptenceProxy)BeanUtil.getBean(AcceptenceProxy.ROLE);
List list=(ArrayList)proxy.findAccByLtd_Bank_Fac(this.company_no,this.factory_id,this.bank_id);;
*/

pw = response.getWriter();
pw.print("");
pw.print("");
pw.print("");
} catch (IOException e) {
log.error(e.getMessage());
e.printStackTrace();
} finally{
if(pw != null){
pw.close();
pw = null;
}
}
}




public String getCompany_no() {
return company_no;
}



public void setCompany_no(String company_no) {
this.company_no = company_no;
}



public Integer getBank_id() {
return bank_id;
}



public void setBank_id(Integer bank_id) {
this.bank_id = bank_id;
}



public Integer getFactory_id() {
return factory_id;
}



public void setFactory_id(Integer factory_id) {
this.factory_id = factory_id;
}
}




Struts.xml

 <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="default" extends="struts-default">
<!-- 定义处理请求URL为login.action的Action -->
<interceptors>
<interceptor-stack name="mystack">
<interceptor-ref name="checkbox" />
<interceptor-ref name="timer" />
<interceptor-ref name="logger" />
<interceptor-ref name="params" />
</interceptor-stack>
</interceptors>




<action name="searchAcc" class="com.plat.acc.action.SearchAccAction">
<!-- 定义处理结果字符串和资源之间的映射关系 -->
<result name="success">/plat/index.jsp</result>
<result name="forword">/plat/error.jsp</result>
<interceptor-ref name="mystack" />
</action>
</package>
</struts>
...全文
390 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
starskybin 2011-11-14
  • 打赏
  • 举报
回复
看了这么多,实际上还是很多人不明白struts2,习惯struts1.楼主就是
huang870615 2009-02-24
  • 打赏
  • 举报
回复
请问是如何解决的啊!!  兄弟 你怎么不贴出来啊?
huang870615 2009-02-24
  • 打赏
  • 举报
回复
我也遇到了!
OliveChinese 2008-08-31
  • 打赏
  • 举报
回复
兄弟,最近我也遇到你这样的麻烦,action里的方法执行了,但没见返回值,
你是怎么解决这个问题的呢?
puton 2008-07-19
  • 打赏
  • 举报
回复
好了 解决了 唉 我去杰分 谢谢 啊 哥们
puton 2008-07-19
  • 打赏
  • 举报
回复
你说的太对了

确实不应该和submit 绑在一起 唉 郁闷

<script type="text/javascript">
function confirmData(){
var com=$("#company_no");
var bank=$("#bank_id");
var factory=$("#factory_id");
$.get("searchAcc!ajax.action", { company_no: "56757", bank_id:"7777",factory_id:"55555" },
function(data){
alert("Data Loaded: " + data);
});

}
</script>

现在有个小问题 后台的action执行了 数据也对了 可我在jsp页面是得不到返回的值 奇怪.....
kingssq 2008-07-19
  • 打赏
  • 举报
回复
晕,楼主,ajax一般用于异步的访问服务器,你把他放到submit按钮里面你还用ajax干啥?
你只要用另外一个客户端事件来激发ajax调用就可以了,别和submit搞一起。
puton 2008-07-19
  • 打赏
  • 举报
回复
补充解释一下 我采用的searchAcc!ajax.action这种访问方式 但实际效果是先执行execute方法 然后就return SUCCESS; 相当于跳转forword了 就执行不到我想执行的ajax()方法了

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧