如何在jQuery Ajax中使用Struts2令牌?
这是我的示例代码,但它返回空值。
<body>
<s:token />
<script>
var strutsToken = "<s:property value="#session['struts.tokens.token']" />";
var token = {
"struts.token.name": "token",
"token": strutsToken
};
alert(token.token);
</script>
<s:if test="hasActionErrors()">
<s:actionerror />
</s:if>
<br>
<s:form action="UpdateUser">
<s:textfield name="name" label="User Name"></s:textfield>
<s:textfield name="address" label="Address"></s:textfield>
<s:submit name="submit" value="Update"></s:submit>
<s:token />
</s:form>
答案 0 :(得分:1)
您需要在进行Ajax调用之前生成令牌。
s:token标记只是放置一个包含的隐藏元素 唯一令牌。
您需要将此隐藏元素放在表单中,以便将其包含在提交的其他字段中。检查token标记的用法。如果您想进行Ajax调用,可以通过多种方式进行调用,因此您也可以查看Struts token interceptor的答案。一种方法是使用jQuery插件及其submit标记。
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>
<head>
<sj:head/>
</head>
<body>
<s:form action="UpdateUser">
<s:textfield name="name" label="User Name"></s:textfield>
<s:textfield name="address" label="Address"></s:textfield>
<sj:submit name="submit" value="Update"></s:submit>
<s:token />
</s:form>