大哥大姐帮帮忙咯,js调用struts1无论如何找不到action ?求解!

大神们都很忙呀 2012-07-10 02:35:10
公司以前的一个项目,开发是用struts1开发的,现在要增加一个新的模块,根据登录进去的用户的session取出username,根据用户的身份来得到一张待办事件的表,我的思路是在登录加载页面的时候,利用js调用一个函数,直接onload过去,传过去的是一个action请求,没有任何参数,因为在登录的时候,LoginAction已进行request.getSession().setAttribute(Globals.USER_KEY, su);操作了,我在我的action中直接取出su.getusername在进行操作即可, 这个是我的思路,现在的问题上我还没有进入action,在我自己的action类上面加了断点,压根就没进去,求各位高手帮帮忙,小弟谢过了。

一下为代码:struts-congig.xml;(由于不需要表单验证,没有form-bean配置)
        <!--新增加的模块!功能是登陆进去根据登录用户的session取出用户的相应信息  -->
<action path="/newtask" scope="request" validate="false"
type="com.coreram.framework.common.action.NewTask" parameter="method" >

<forward name="ok" path="/success.jsp"/>

</action>


我自己的action类,只是为了测试,里面的代码基本可以无视:

package com.coreram.framework.common.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.struts.DispatchActionSupport;

public class NewTask extends DispatchActionSupport{

public ActionForward newtask(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

if ("tom".equals("tom")) {
return mapping.findForward("ok");
}

return null;
}
}



javascript:

function doNewsTask(){
//task.jsp一开始加载首先调用这个函数,把action传过去,获取到当前session的username!!!
try {

//alert("error");
//location.href ="/Test.jsp";这种写法是正确的!!
//window.location.href="/Test.jsp"; 这种写法是错误的!!
var url="/newtask.do";
window.location.href=url;
}
catch(e)

{alert("wrong");}


}


另外struts-congig.xml中的全局异常节点使用了一个异常处理类,因为程序不是我写的,我是新来的,所以我现在最怀疑这个类引发我所有的问题,因为如上的javascript路径应该是正确的,可是一登陆就会出现异常页面,我也一起贴出来


<global-exceptions>
<exception key="general.exception" type="java.lang.Exception"
scope="request" handler="com.coreram.framework.exception.RedirectExceptionHandler"
path="/error.jsp" />
</global-exceptions>



public class RedirectExceptionHandler
extends ExceptionHandler {

private static org.apache.log4j.Logger logger = org.apache.log4j.LogManager.getLogger("RedirectExceptionHandler");
public ActionForward execute(Exception ex,
ExceptionConfig ae,
ActionMapping mapping,
ActionForm formInstance,
HttpServletRequest request,
HttpServletResponse response) throws
ServletException {
ActionForward forward = null;
ActionError error = null;
String property = null;
if (ae.getPath() != null) {
forward = new ActionForward(ae.getPath(),true);

}
else {
forward = mapping.getInputForward();
}

// Figure out the error
if (ex instanceof ModuleException) {
error = ( (ModuleException) ex).getError();
property = ( (ModuleException) ex).getProperty();
}
else {
logger.error(ex.getMessage());
error = new ActionError(ae.getKey(), ex.getMessage());
property = error.getKey();
}

// Store the exception
request.setAttribute(com.coreram.framework.Globals.KEY_ERROR_MESSAGE, ex.getMessage());
storeException(request, property, error, forward, ae.getScope());
return forward;
}

}


我之前做过一个小测试,如果直接调用一个jsp页面,action就可以传递过去,

测试的小程序:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'Test.jsp' starting page</title>
</head>

<body>
<form action="TestAction.do" method="get">

<input type="text" maxlength="12" name="userno">

<input type="submit" value="OK!">
</form>
</body>
</html>


action类

package com.coreram.framework.common.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.coreram.framework.manager.sysuser.SysUser;
import com.coreram.framework.util.Pub;

public class TestAction extends DispatchAction {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

try {
String userno = Pub.val(request, "userno");
if (userno.equals("tom")) {
return mapping.findForward("success");
}
//SysUser user = (SysUser)request.getSession().getAttribute("cur_user");
//System.out.println(user.getUsername());
//System.out.println(user.getUserno());
//SysUser user = (SysUser) request.getSession().getAttribute(com.coreram.framework.Globals.USER_KEY);
} catch (Exception e) {
}

return mapping.findForward("failed");
}
}


求高人指点啊!!
...全文
303 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

= = 最重要的 web.xml 没贴
web.xml
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts……
[/Quote]

ActionSupport是struts2,我的是struts1, 呵呵,问题解决了,struts1的类继承错了,
public class NewTask extends DispatchActionSupport

应该是BaseDispatchAction
wmyasw 2012-07-10
  • 打赏
  • 举报
回复
= = 最重要的 web.xml 没贴
web.xml
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
和引入的 过滤器有关, 我的是public class TestAction extends ActionSupport
自己对比下
chen_bq 2012-07-10
  • 打赏
  • 举报
回复
你去iteye吧!
tianfu_123 2012-07-10
  • 打赏
  • 举报
回复
呵呵,这个问题太高深了,不懂
巽谷雨 2012-07-10
  • 打赏
  • 举报
回复
慢慢解决
  • 打赏
  • 举报
回复
在公司勇哥的帮助下解决了,原来是action的类继承错了,看来csdn是真的没人了,悲哀啊!!

public class NewTask extends DispatchActionSupport

应该是BaseDispatchAction
  • 打赏
  • 举报
回复
晕,我连发三贴了,一个人都没有啊,太尴尬了把, Java版,难道我要去其他版发Java求助帖??????
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 ### Home Bus 协议概述 Home Bus协议,亦被称为家庭总线协议,是由日本研发的一种专门应用于家庭自动化领域的通信标准。该协议在商用空调及其他家用电器的远程操控方面具备广泛的应用范围。借助Home Bus协议,设备之间能够达成高效的通信,使用户能够更加便利地监管家庭中的各类智能设备。 ### ECHONET协议及其背景 Home Bus协议与ECHONET协议存在紧密的联系,实际上,ECHONET代表了一种更为具体的技术规范,其目的在于为家庭自动化领域构建一个开放且统一的通信标准。ECHONET由ECHONET财团负责维护与支持,该组织致力于推动该协议的进步与标准化进程。ECHONET协议的应用范围不仅限于家庭环境,还包括了楼宇自动化以及工业自动化等多个领域。 #### ECHONET的历史版本及修订记录 - **Version 1.0**:发布于2000年3月18日,同年7月对联盟成员公开,最终于同年对公众发布。 - **Version 1.01**:在2001年5月23日,向联盟成员发布,主要进行了补充和勘误工作。 - **Version 2.00**:2001年8月7日,针对联盟成员发布。此版本中将电源线A和电源线B两种方式合并为单一电源线方式(基于电源线A),并对相关描述进行了调整。 - **Version 2.01**:2001年11月9日,进行了一些必要的修正,包括排版错误的修正、术语的标准化等。 - **Version 2.10**:经历预览版和草案阶段后,于2002年3月7日正式对联盟成员开放。此次更新主要涉及第3部分关于状态转换的描述修改。 -...

67,535

社区成员

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

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