我的struts应用程序出现问题,要求用户使用表单操作更新其详细信息,因为userUpdateAction和表单bean是UserUpdateForm。我有servlet过滤器来检查用户是否已经登录。如果他没有登录,我将转发登录动作。如果他登录我将向他显示更新表格,在所有成功验证后,它将被转发到空白页面。
的struts-config.xml
action path="/userUpdateAction" type="com.vaannila.action.userUpdateAction" name="UserUpdateForm" input="/update.jsp" validate="true" scope="request">
<forward name="success" path="/updateSuccess.jsp" />
<forward name="error" path="/update.jsp" />
动作类
public class userUpdateAction extends Action{
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
ServletRequest req, ServletResponse res) throws Exception {
UserUpdateForm userform = (UserUpdateForm)form;
System.out.println("form values :"+userform.getEmail());
return mapping.findForward("success");
}
}
转发名称是正确的(类和struts-config.xml中的成功是正确的)。 execute方法也正确地覆盖Action execute方法。
在tomcat控制台中,我可以看到
user already logged in start chain execution
2 Feb, 2012 9:12:10 AM org.apache.struts.chain.commands.servlet.CreateAction createAction
INFO: Initialize action of type: com.vaannila.action.userUpdateAction
errors : {}
userUpdateAction已初始化,但它不会执行execute
方法并转到空白页。
答案 0 :(得分:1)
我在评论部分看到已解决的问题已针对特定用户解决。我有与描述相同的行为(提交http请求,但只返回一个空白页)。希望与其他人分享我的决议,特别是因为这里的初步答案有助于我解决问题。
我的团队和我正在从Struts 1.1升级到1.3(一个大跳跃)。我们的所有动作类都使用perform()方法。事实证明,对于v1.1,不推荐使用perform()并添加了execute()。在v1.2中,删除了perform()。在我们开始升级之前,这些信息从未在我们的初始研究中找到。我不知道为什么我们原来的应用程序编写者多年前都没有使用execute()。
我们更改了我们的动作类以使用execute()方法,所有内容都重新开始工作。
希望这可能在将来节省别人的时间和精力。