如何识别重定向并在struts动作中提交

时间:2010-07-21 18:00:11

标签: redirect struts2 struts submit struts-action

我的网站使用struts和tiles。 我使用此链接链接到注册表单:

<a href='<s:url action="register" namespace="/vtv"  />' >Register</a>

这里是register.jsp:

<s:form namespace="/vtv" action="register">
        <s:textfield label="Username" name="username" />
        <s:textfield label="Password" name="password" />
</s:form>

在操作中,我插入用户:

public String execute() {
    String retVal = ERROR;
    try {
            MemberDAO.InsertUser(mo);
            retVal = SUCCESS;
        }
    } catch (Exception e) {
        retVal = ERROR;
    }
    return retVal;
}
在tile文件中,我定义:

<definition name="vtv.register" extends="basic">
    <put-attribute name="content" value="/modules/register/register.jsp" />
</definition>

并在struts文件中:

    <package name="Register" namespace="/vtv" extends="struts-default">
    <result-types>
        <result-type name="tiles"
                     class="org.apache.struts2.views.tiles.TilesResult" />
    </result-types>
    <action name="register" class="vtv.action.RegisterAction">
        <result name="success" type="tiles">vtv.register</result>
        <result name="error" type="tiles">vtv.error</result>
    </action>
</package>

我的问题是如何使用链接

重定向到注册页面
<a href='<s:url action="register" namespace="/vtv"  />' >Register</a>

没有执行中的执行?我怎么知道这是重定向还是提交?

1 个答案:

答案 0 :(得分:0)

<s:url>标记中,您可以指定要在RegisterAction中调用的特定方法:

<s:url action="register" method="yourRedirectMethodName" namespace="/vtv"  />

然后在你的行动中定义:

public String yourRedirectMethodName() {
    // Redirect logic
    return SUCCESS;
}

表单提交将调用execute(),而上面的链接将调用yourRedirectMethodName()。