代码之家  ›  专栏  ›  技术社区  ›  TaherT

在struts 2中,默认情况下不调用execute方法

  •  1
  • TaherT  · 技术社区  · 14 年前

    我有HelloWorld.java文件作为控制器和HelloWorld.jsp文件这是我的struts.xml文件

    <struts>
    <package name="example" namespace="/example" extends="struts-default">
        <action name="add" class="example.HelloWorld" method="add">
            <result name="SUCCESS" type="redirect">HelloWorld</result>
        </action>
        <action name="HelloWorld"
                class="example.HelloWorld">
            <result name="input">/example/HelloWorld.jsp</result>
        </action>
    </package>
    

    package example;
    
    import com.opensymphony.xwork2.ActionSupport;
    import java.util.Date; 
    import java.util.List;
    
    /**
    * <code>Set welcome message.</code>
    */
    public class HelloWorld extends ActionSupport {
    
    private static final long serialVersionUID = 9149826260758390091L;
    private Contacts Contacts;
    private ContactManager linkController;
    private List<Contacts> ContactsList;
    
    public HelloWorld() {
        linkController = new ContactManager();
    }
    
    @Override
    public String execute() {
        if (null != Contacts) {
            linkController.add(getContacts());
        }
        this.ContactsList = linkController.list();
        System.out.println(ContactsList);
        System.out.println(ContactsList.size());
        return SUCCESS;
    }
    
    public String add() {
        System.out.println(getContacts());
        getContacts().setBirthdate(new Date());
        try {
            linkController.add(getContacts());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return SUCCESS;
    }
    
    public Contacts getContacts() {
        return Contacts;
    }
    
    public void setContacts(Contacts Contacts) {
        this.Contacts = Contacts;
    }
    
    public List<Contacts> getContactsList() {
        return ContactsList;
    }
    
    public void setContactsList(List<Contacts> ContactsList) {
        this.ContactsList = ContactsList;
    }
    
    }
    
    3 回复  |  直到 12 年前
        1
  •  2
  •   Trick    14 年前

    您在中只有输入结果struts.xml文件并在execute()中返回success。

    <package name="example" namespace="/example" extends="struts-default">
        <action name="add" class="example.HelloWorld" method="add">
            <result name="SUCCESS" type="redirect">HelloWorld</result>
        </action>
        <action name="HelloWorld"
                class="example.HelloWorld">
            <result name="input">/example/HelloWorld.jsp</result>
            <!-- FOLLOWING LINE IS MISSING -->
            <result name="SUCCESS">/example/HelloWorld.jsp</result>
        </action>
    </package>
    
        2
  •  0
  •   Mihai Iorga    12 年前

    我面对同样的问题,找到了解决办法。

    1. 对于每个ActionClass,都应该维护唯一的操作验证文件。
    2. 不要把所有的动作都混为一谈
        3
  •  0
  •   JavaSun    11 年前

    <package name="example" namespace="/example" extends="struts-default">

    <action name="add" class="example.HelloWorld" method="add">
        <result name="SUCCESS" type="redirect">HelloWorld</result>
        <result name="input" type="redirect">HelloWorld</result>
    </action>
    <action name="HelloWorld" class="example.HelloWorld">
        <result name="input">/example/HelloWorld.jsp</result>
        <result name="SUCCESS">/example/HelloWorld.jsp</result>
    </action>`