您的位置:首页 > 编程语言 > Java开发

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

2017-08-11 18:32 344 查看
        在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。

最后一句:学习之路任重道远。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2 exception