在strutrs2遇到的一些会忽略的问题

        在struts2中,提交上来的url符合struts的url拦截规则,但是没有该action方法,会默认调用其excute()方法:

        (1)若是提交上来的数据没有通过validate()方法的校验,就会直接返回result,rusult的值为:input,若在struts.xml中没有该result结果,则会显示异常通常为警告: No result defined for action tutorial.ProductConfirm and result input,它提示我们没有为Action定义输入结果

解决办法:在struts.xml的action中添加相应result,其结果为input。或者把自己的validate()方法重写(一般不这么做,因为一般不用struts2的校验不合法数据)。还有一种方法就是使用javaScript去清除掉不合法的数据。


         (2)若是你没有定义有execute()方法,但是默认的继承类ActionSupport类里,就会有这个方法的定义,而且返回值是“success”,若是struts.xml中的相应action中有result的值为success,则会跳转至该模板。(ps:一般登录方法中就经常出现只输入其action前缀就能登陆进去的。)例如:

          struts.xml中定义有:

<package name="default" extends="struts-default" namespace="/">  
      <!-- 登陆 -->
		<action name="Login_*" class="LoginAction" method="{1}">
			<result name="success">/WEB-INF/page/system/login/main.jsp</result>
			<result name="logout">/login.jsp</result>
			<result name="error">/error/error404.jsp</result>
		</action>
</package>


如果你的LoginAction.java中没有重写execute()方法,也没有相应的拦截器拦截,在部署你的项目到tomcat并运行时,你会发现,你直接输入http://127.0.0.1:8080/项目名/Login.action,就能直接进入你的主页。

为了避免这个错误,我们在使用struts2框架时,应该加上自己的拦截器,或者在自己的LoginAction.java中去重写execute()方法。避免项目的bug。

最后一句:学习之路任重道远。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值