如何理解表单是在struts动作中提交的

时间:2013-01-14 13:14:27

标签: struts2

在struts2操作中,注入用于设置操作类的属性值,因此属性将通过表单提交上的表单字段进行更新。为了发现提交哪个表单,我创建了一个调用isFormSubmitted()的方法,并在那里检查为此动机创建的冗余属性。该属性在隐藏字段中更新。但是我发现这个锻炼太脏了!我认为必须有更好的方法来解决这个问题。

我的工作是:

<s:form name="form1">
  <s:hidden name="submit" value="10" />
  ...other fields go here
</s:form>

在操作类中,我有getSubmitsetSubmit方法和以下方法:

public boolean isFormSubmitted(){
  return (submit == 10);
}

3 个答案:

答案 0 :(得分:3)

您可以在操作中调用不同的操作方法,而不仅仅是“执行”方法。只需在请求中输入名称为“method:actionMethodName”的参数即可。这是一个例子:

public class MyAction extends ActionSupport {    

  public String execute() {      
    // Base code
    return SUCCESS;
  }

  public String one() {      
    // Code one
    return SUCCESS;
  }

  public String two() {      
    // Code two
    return SUCCESS;
  }    

}

这是jsp:

<s:form action="MyAction">
  <input type="submit" value="Call execute"/>
  <input type="submit" name="method:one" value="Call method one"/>
  <input type="submit" name="method:two" value="Call method two"/>
</s:>

或者你可以这样做:

<s:form action="MyAction" name="form0">
  <!-- call execute-->
</s:>

<s:form action="MyAction" name="form1">
  <!-- call method one-->
  <input type="hidden" name="method:one"/>
</s:>

<s:form action="MyAction" name="form2">
  <!-- call method two-->
  <input type="hidden" name="method:two"/>
</s:>

答案 1 :(得分:0)

您应该使用<s:form>代码action属性提交具体操作。

<s:form action="action1">
  ...
</s:form>

<s:form action="action2">
  ...
</s:form>

请参阅<s:form>代码文档:http://struts.apache.org/2.x/docs/form.html

<强>更新

然后只需使用单独的操作来加载和保存用户。

答案 2 :(得分:0)

你应该提交这样的表格。

<s:form name="form1">
 <s:hidden name="submit" value="10" />
</s:form>

创建一个java脚本函数

function onclick()
{
document.form1.submit();
}

然后创建getters&amp;隐藏领域的行动者

并执行方法

    public String execute()
    {
    setSubmit(10);
    return SUCCESS;
}

更新:

<a href="your_action_name"></a>

  <s:a href="your_action"></a>