一般做添加修改的功能时,要防表单重复提交,如果不限制就会影响后台的数据,会产生很多没用的垃圾数据,对性能也不好
第一步:
在struts.xml文件中添加或者修改方法配置token拦截器
<interceptor-ref name="token"/>
第二步:
表单重复提交时需要的找得视图
<result name="invalid.token">/WEB-INF/jsp/admin/identity/addUser.jsp</result>
第三步:
在添加页面(addUser.jsp)中需要传一个token到后台
<!-- 防表单重复提交需要传的参数 -->
<s:token></s:token>
<s:form id="addUserForm" action="/admin/identity/addUser.jspx" method="post" theme="simple">
<!-- 防表单重复提交需要传的参数,要写在form表单内,只要写个标签就行了,它会自动往里面生成数据 -->
<span style="background-color: rgb(255, 0, 0);"><s:token></s:token></span>
</s:form>
第四步:
在添加页面(addUser.jsp)输出提示信息.
<!-- 输出防表单重复提交的提示信息 -->
<s:actionerror cssStyle="font-size:12px;color:red;"/>
<!-- 输出防表单重复提交的国际化信息提示在这里显示 -->
<span style="white-space:pre"> </span><s:actionerror cssStyle="font-size:12px;color:red;"/>
第五步:
对提示信息处理国际化,因为提示消息刚开始显示的是英文,英文不好就会看不懂,我们只好把英文提示信息改为中文,这样都能看的懂了
第一小步:xml文件配置
<!-- 配置struts全局的国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="oa_messages"/>
第二小步:properties文件配置(oa_messages_zh_CN.properties)
oa_messages_zh_CN.properties:文件格式内容是key=value形式。配置如下:
struts.messages.invalid.token=表单重复提交!
<span style="white-space:pre"> </span><!-- 添加用户 -->
<action name="addUser" class="cn.oa.admin.identity.action.UserAction" method="addUser">
<!-- 先把默认拦截器引入进来,然后再使用自己的拦截器,才能覆盖默认的拦截器 -->
<interceptor-ref name="loginStack"></interceptor-ref>
<!-- 添加防表单重复提交拦截器 -->
<span style="background-color: rgb(255, 0, 0);"><interceptor-ref name="token"></interceptor-ref></span>
<!-- addUser方法的返回值 -->
<result>/WEB-INF/jsp/admin/identity/user/addUser.jsp</result>
<!-- 表单重复提交时需要找到的视图,可以在视图页面输出提示信息用来提示用户 -->
<span style="background-color: rgb(255, 0, 0);"><result name="invalid.token">/WEB-INF/jsp/admin/identity/user/addUser.jsp</result></span>
<!-- 后台validation.xml校验失败时,会找的视图,可以在视图页面输出提示信息用来提示用户 -->
<!-- 后台输入校验:提供xxx-xxx-validtion.xml
格式: Action的类名-action的name属性值-validation.xml
UserAction-addUser-validation.xml -->
<result name="input">/WEB-INF/jsp/admin/identity/user/addUser.jsp</result>
</action>