2010-09-21 90 views
1

在struts 2中執行方法默認不會被調用。在struts 2中執行方法默認不會被調用

我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; 
} 

} 
+1

顯示您的HelloWorld.java! – Trick 2010-09-23 09:44:08

回答

2

你只需輸入結果struts.xml中和返回成功執行( )。

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

可以請你給我一個正確的答案,因爲我是Struts 2中的新手。 – TaherT 2010-09-27 05:00:38

+0

我已經添加了你的struts.xml應該是什麼樣子。 – Trick 2010-09-27 11:23:45

+0

它工作嗎?或者你在其他地方找到答案了嗎? – Trick 2010-09-29 18:36:02

0

我面對同樣的問題,並找到解決方案。

  1. 您的validation.xml應該只處理ActionClass中的屬性。
  2. 對於每個ActionClass應該保持唯一的Action-Validation文件。
  3. 不要混在一起的所有操作在不同Ĵ
0

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

試試這個。這可能會幫助你。