2012-07-10 47 views
0

这工作一个月前,现在我重新加载代码,它不起作用。这里是我的支杆剪错误未被传递回struts jsp

<action name="checkManager" class="CheckAction"> 
     <result>/pages/check_manager.jsp</result> 
    </action> 

    <action name="submitFile" class="SubmitFileAction"> 
     <result name="success">/pages/submit_file.jsp</result> 
     <result name="error">/pages/check_manager.jsp</result> 
    </action> 

因此,第一页是checkManager。它有一个调用submitFile操作的按钮。当它触发时,它会检查密码,如果它失败,则操作类发送错误结果。现在一个月前,上面的结果错误会将用户重定向回原始的check_manager.jsp页面,其中包含最初加载的数据和错误消息。今天,它将用户重定向到原始页面check_manager.jsp。没有数据,就像servlet从未被解雇,只是呈现一个空白的jsp页面。我查看了源代码历史记录,在这个应用程序中没有任何改变

我不明白为什么这会停止工作,任何人都可以给我一个想法?我必须在大约一个半小时内向客户介绍这件事,所以我真的被困在这里。

说明,我试图改变错误此

<result name="error" type="redirectAction">checkManager</result> 

,我得到我的数据回来,但我失去我的错误消息,这是不是一件好事。呃,有什么想法?

if (enteredHash.equals(storedHash)) { 
      _log.debug("The password matched"); 
      UserSession<User> userSession = (UserSession<User>) session 
        .get("user"); 
      #do logic# 
     } else { 
      _log.debug("The password didn't match"); 
      addActionError("The password you entered was incorrect, nothing was sent to the bank."); 
      return ActionSupport.ERROR; 
     } 
     return ActionSupport.SUCCESS; 

我的jsp

<s:if test="hasActionErrors()"> 
      <div class="errors"> 
      <s:actionerror/> 
      </div><br> 
     </s:if> 

再次,这完美地工作在一个月前。我所做的只是检查一直未被触及的部署。现在它不起作用。

+0

你是如何将这些数据提供给JSP的?你是否添加了一个动作错误?你能为你的行为提供代码吗? – rees 2012-07-10 12:32:14

+0

你在jsp中有这个:''? – rees 2012-07-10 12:40:02

+0

我说得对,当你在这种类型的工作流之后转到另一个JSP时,它应该把原始页面中的数据带到servlet中吗?我的意思是这里是整个checkaction类'public class CheckAction extends ActionSupport { \t private Collection checkList; \t public Collection getCheckList(){ \t \t return checkList; \t} \t公共字符串执行(){ \t \t清单= Check.list(); \t \t return SUCCESS; \t} }' – scphantm 2012-07-10 12:45:52

回答

1

速战速决可能是这个在CheckAction添加到getCheckList

public Collection<Check> getCheckList() { 
    ActionContext.getContext().getSession().put("checkList", checkList); 
    return checkList; 
} 

,这增加了SubmitFileAction

public Collection<Check> getCheckList() { 
    return (Collection<Check>) ActionContext.getContext().getSession().get("checkList"); 
} 

这不是一个很好的永久解决方案,但应该让你你需要进入紧缩状态!

+0

美丽。那工作。我可以稍后再说,非常感谢。我仍然不明白一个月前它是如何工作的。我真的不知道。当我没有客户走在门口时,我会在前后查看一些修改,看看我是否缺少一些愚蠢的东西。但同时,非常感谢你,这节省了我的培根。 – scphantm 2012-07-10 13:03:22

+0

很高兴我能帮忙,祝你好运! – rees 2012-07-10 13:28:45

+0

它变得很棒。这只是一个原型应用程序,但我们将继续推进这一概念。即时工作在生产版本技术堆栈上。非常感谢。 – scphantm 2012-07-11 12:52:07