如何在JQuery Ajax中使用Struts 2令牌?

时间:2014-05-12 04:40:50

标签: java jquery ajax jsp struts2

如何在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>

1 个答案:

答案 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>