2010-07-21 61 views
0

我的網站使用struts和tiles。 我使用這個鏈接鏈接到註冊表單:如何識別重定向並在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> 

和支柱文件:

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

沒有做在行動中執行註冊頁面?我怎麼知道這是重定向還是提交?

回答

0

在你<s:url>標籤,你可以指定你想在你的RegisterAction來調用特定的方法:

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

然後在你的行動定義:

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

這樣表單提交將調用執行()而上面的鏈接將調用yourRedirectMethodName()。

+0

在Struts中是否有像Asp.net這樣的IsPostBack變量? – hieu 2010-07-22 06:51:28

+0

不是我知道的,但是對我來說發生的其他事情是您可以檢查您的Action的表單屬性是否已設置。如果是的話,這是表單提交。如果不是,則它是來自鏈接的重定向。 – Pat 2010-07-22 10:44:11