hellolengfenga 2010-04-09 01:41
浏览 213
已采纳

请问一个Struts1原理的一个非常郁闷的问题,我调试到源码还是找不出原因,希望解决,谢谢

我调试到ActionServlet中的
[color=red]protected void process(HttpServletRequest request, HttpServletResponse response)[/color]方法,里面有下面几句代码
[color=red] RequestProcessor processor = getProcessorForModule(config);
if (processor == null) {
processor = getRequestProcessor(config);
}
processor.process(request, response);[/color]
创建出来的processor的类型我发现是org.apache.struts.chain.ComposableRequestProcessor,里面覆盖了process方法,进入process方法后我没有看见那些处理请求的代码,比如封装ActionForm等等,里面仅仅有几句代码
[color=red] public void process(HttpServletRequest request, HttpServletResponse response) {
request = processMultipart(request);
ActionContext context = contextInstance(request, response);
//Create and execute the command.
command.execute(context);
context.release();
}[/color]我一直跟踪下去也没有发现什么,
,在原生的
org.apache.struts.action.RequestProcessor类里面有这些代码
[color=red] public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String path = processPath(request, response);
if (path == null) {
return;
}
if (!processPreprocess(request, response)) {
return;
}
ActionMapping mapping = processMapping(request, response, path);
if (mapping == null) {
return;
}

    if (!processForward(request, response, mapping)) {
        return;
    }
    if (!processInclude(request, response, mapping)) {
        return;
    }
    Action action = processActionCreate(request, response, mapping);

    if (action == null) {
        return;
    }
    ActionForward forward =
        processActionPerform(request, response, action, form, mapping);
    processForwardConfig(request, response, forward);
}[/color],我在这些代码上面加断点,可是一直没有看见进入代码块

我主要就是想知道比如ActionForm是如何创建的,这个RequestProcessor好像名堂比较多,我知道是可以配置的,我现在的例子是没有配置的,就是默认的,我记得以前调试的时候创建的processor类就是RequestProcessor类,可是今天调试发现居然是他的子类,而且子类还覆盖了他的方法,但是最后什么时候调用父类的方法我一直没有发现

今天之所以去看源码,主要是发现一个问题,很奇怪,比如我请求一个UserAction想显示人员列表,请求url为/user/list.do,我如果不加任何参数,居然到Action的execute的方法里面的时候ActionForm是null值,也就是没有给我创建ActionForm,我觉得就算我没有请求参数,也起码要创建一个ActionForm吧,里面没有值当然是正常的了

  • 写回答

2条回答 默认 最新

  • magicfreezing 2010-04-09 11:30
    关注

    Struts1很久不用了,但是根据你的描述我觉得没必要深究代码

    更大的可能是你的配置可能出错了,请仔细看一下你action的配置,还有相关的formbean的配置,另外看看提交的表单的各个空间里面的name和formbean里是否对应

    我觉得你说的问题,应该是出在这么几点上,仔细检查下吧 :D

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮