How to call a method on a submit button in Struts 2 using an agreement plugin?

In the following code snippet about the Struts action class,

@Namespace("/admin_side")
@ResultPath("/WEB-INF/content")  // Default.

public final class TestAction extends ActionSupport implements Serializable
{
    private static final long serialVersionUID = 1L;
    private static final String SUCCESS = "success";

    private String name;
    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    @Action(value="test",results={@Result(name="success",location="Test.jsp")})
    public String execute() throws Exception
    {
        System.out.println("name = "+name);
        System.out.println("email = "+email);
        return SUCCESS;
    }

    // Some annotations to map this method to <s:submit>
    public String postAction()
    {
        System.out.println("postAction() invoked.");
        System.out.println("name = "+name);
        System.out.println("email = "+email);
        return SUCCESS;
    }
}

I want to call a method postAction()for a given submit button so that

<s:form action="test">
    <s:textfield id="name" name="name" label="Enter your name"/>
    <s:textfield id="email" name="email" label="Enter your email"/>

    <s:submit value="Submit" method="postAction"/>
</s:form>

I have seen questions like this , but they all use XML configurations in struts.xml.

How to make it possible using a conditional plugin ?

+1
source share
2 answers

You need to use the attribute namespacebecause your action maps to @Namespace.

<s:form namespace="/admin_side" action="test">
    <s:textfield id="name" name="name" label="Enter your name"/>
    <s:textfield id="email" name="email" label="Enter your email"/>

    <s:submit value="Submit" method="postAction"/>
</s:form>

WW-4023,

<s:url var="myUrl" namespace="/admin_side" action="test" method="postAction"/> 
<s:form action="%{#myUrl}">
    <s:textfield id="name" name="name" label="Enter your name"/>
    <s:textfield id="email" name="email" label="Enter your email"/>

    <s:submit value="Submit"/>
</s:form>

params excludeParams, method .

, DMI , method submit tag method action, . , , form JavaScript onclick.

+1

:

  • @Action :

    @Action(value="test",results={@Result(name="success",location="Test.jsp")})
    public final class TestAction extends ActionSupport implements Serializable {
    
  • execute() - , . test():

    public String test() throws Exception {
        System.out.println("name = "+name);
        System.out.println("email = "+email);
        return SUCCESS;
    }
    
    public String postAction() {
        System.out.println("postAction() invoked.");
        System.out.println("name = "+name);
        System.out.println("email = "+email);
        return SUCCESS;
    }
    

:

@Action @Actions

, , , Dynamic . , , , ( , )

, , Struts.xml.

; , , : Struts2 : DMI. , Struts2 Maven DMI, false, .

DMI Actions , Action action <s:submit/>:

@Action(value="test",results={@Result(name="success",location="Test.jsp")})
public String test() throws Exception {
    System.out.println("name = "+name);
    System.out.println("email = "+email);
    return SUCCESS;
}

@Action(value="postAction",results={@Result(name="success",location="Test.jsp")})
public String postAction() {
    System.out.println("postAction() invoked.");
    System.out.println("name = "+name);
    System.out.println("email = "+email);
    return SUCCESS;
}

JSP:

<s:form namespace="/admin_side">
    <s:textfield id="name"  name="name"  label="Enter your name"  />
    <s:textfield id="email" name="email" label="Enter your email" />

    <s:submit value="Submit to test()"       action="test"       />
    <s:submit value="Submit to postAction()" action="postAction" />
</s:form>

EDIT: Struts 2.3.15.3, action: :

<constant name="struts.mapper.action.prefix.enabled" value="true"/>

.

+2

All Articles