无法使用超链接实现Struts 2令牌拦截器
我尝试使用<s:url ..
标签实现令牌拦截器,但在第一次单击时显示错误。 即The form has already been processed or no token was supplied, please try again.
我想实现这个拦截器,因为如果用户已经删除了一行并再次刷新页面,那么同一个动作不应该再次执行。
<a href='https://stackoverflow.com/questions/18822095/unable-to-implement-struts-2-token-interceptor-with-hyperlink/' style="color: white;text-decoration: none;" class="delbuttonlink">Clear current Uploads
和我的struts.xml
:
uploadforward uploadforward
s:标记标记仅放置包含唯一标记的隐藏元素。
不需要将令牌与url一起使用,因为应该提交表单。 如果要将某个标记作为参数传递,则需要使用s:param
标记。
定义参数
private String token; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String execute() throws Exception { Map context = ActionContext.getContext().getValueStack().getContext(); Object myToken = context.get("token"); if (myToken == null) { myToken = TokenHelper.setToken("token"); context.put("token", myToken); } token = myToken.toString(); return SUCCESS; }
在JSP中
使用令牌与URL的最简单方法是使用
标记将标记值设置为会话并在
标记中检索它。