是否可以使用GUID作为标记名称设置struts标记?

时间:2014-06-13 21:44:20

标签: java jsp struts2 token ognl

我尝试在每个表单都有唯一名称的表单中设置struts标记。有没有办法像<s:token name="<some random generated characters>"那样设置令牌。我打算使用TokenHelper.generateGUID()来生成令牌名称,如果可能的话。我尝试使用<s:set var="tokenName" value="<%=TokenHelper.generateUID()%>"/>设置变量,然后使用<s:token name="${tokenName}"/>设置令牌。我在设置标签时遇到错误。以下是表单的一般代码流程。

以下是我尝试过的事情,但结果相同。

   <%@ page import="org.apache.struts2.util.TokenHelper" %>

   <s:form action="actionName_method" name="actionName" method="post">
     <s:token name="<%=TokenHelper.generateGUID()%>"/>
     <s:hidden ....
     .... rest of the fields go here ....
     <s:submit value="save" name="submit"/>
   </s:form>

我尝试的另一个是,

    <%@ page import="org.apache.struts2.util.TokenHelper" %>
    <s:set var="tokenName" value="${f:generateGUID()}"/>
    <!-- I defined generateTokenName as a tld function using the TokenHelper class -->
           <s:form action="actionName_method" name="actionName" method="post">
             <s:token name="${tokenName}"/>
             <s:hidden ....
             .... rest of the fields go here ....
             <s:submit value="save" name="submit"/>
           </s:form>

这是我对tld文件中函数f:generateGUID()的定义。

    <function>
        <description>This will generate the a unique tokenName</description>
        <name>generateGUID</name>
        <function-class>org.apache.struts2.util.TokenHelper</function-class>
        <function-signature>java.lang.String generateGUID()</function-signature>
    </function>

提前谢谢。

1 个答案:

答案 0 :(得分:1)

是的,可以使用

设置令牌名称
<s:token name="%{tokenName}"/>

它将生成两个隐藏字段,一个用于令牌名称,另一个用于令牌值。确保第一个字段的值对应于第二个字段的名称。

动作属性tokenName初始化为

tokenName = TokenHelper.generateGUID();

tokenName = UUID.randomUUID().toString();

还要确保表单使用POST方法。