2010-07-21 52 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