Как распознать перенаправление и отправить в действии struts

На моем веб-сайте используются стойки и плитки. Я использую эту ссылку для ссылки на регистрационную форму:

<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;
}

в файле плитки я определяю:

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

без выполнения в действии? Как я могу узнать, это перенаправление или отправка?


person hieu    schedule 21.07.2010    source источник


Ответы (1)


В вашем теге <s:url> вы можете указать конкретный метод, который вы хотите вызвать в своем RegisterAction:

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

И затем в своем действии определите:

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

Таким образом, отправка формы будет вызывать execute(), тогда как приведенная выше ссылка будет вызывать yourRedirectMethodName().

person Pat    schedule 21.07.2010
comment
есть ли переменная IsPostBack, такая как Asp.net в стойках? - person hieu; 22.07.2010
comment
Не то, чтобы я знал, но что-то еще, что пришло мне в голову, это то, что вы можете проверить, установлены ли свойства формы вашего действия. Если да, то это отправка формы. Если нет, то это редирект со ссылки. - person Pat; 22.07.2010