2011-12-21 77 views
-1

这个问题可能在多个线程被要求......但下方显示Struts2的迭代与JavaBean的

不能罚款正确答案

一个Java Bean

package com.example; 

public class Document { 
    private String name; 
    public String getName() { 
    return name; 
    } 
    public void setName(String name) { 
    this.name = name; 
    } 
} 

一个ArrayList创建的JavaBean

package com.example; 
    import java.util.ArrayList; 
    public class classdocs { 

    public ArrayList getData() { 
     ArrayList docsmx = new ArrayList(); 
     Document d1 = new Document(); 
     d1.setName("user.doc"); 
     Document d2 = new Document(); 
     d2.setName("office.doc"); 
     Document d3 = new Document(); 
     d3.setName("transactions.doc"); 
     docsmx.add(d1); 
     docsmx.add(d2); 
     docsmx.add(d3); 
     return docsmx; 
     } 
    } 

一个动作类

包com。示例; import java.util.ArrayList;

import com.opensymphony.xwork2.ActionSupport; 

public class FetchAction extends ActionSupport { 
     private String username; 
     private String message; 
     private ArrayList docsmx = new ArrayList(); 

     public ArrayList getDocuments() { 
      return docsmx; 
     } 

     public String getMessage() { 
      return message; 
     } 
     public void setMessage(String message) { 
      this.message = message; 
     } 
     public String getUsername() { 
      return username; 
     } 
     public void setUsername(String username) { 
      this.username = username; 
     } 

     public String execute() { 
      classdocs cx = new classdocs(); 

      if(username != null) {   
       docsmx = cx.getData(); 
       return "success"; 
      } else { 
       message="Unable to fetch"; 
       return "failure"; 
      } 
     } 
    } 

用jsp Struts2的iterator标签

Documents uploaded by the user are:</br> 
<s:iterator value="docsmx">  
<s:property value="name" /></br> 
</s:iterator> 

问题为什么当迭代...

我做一些事错不在显示包含的JavaBean桶的ArrayList的???

与问候 KARTHIK

回答

1

根据您的版本,您应该提供docsmx(首选,预S2.1.mumble)的吸气剂,或使docsmx公众(不作为首选,S2.1 +) 。

或者,根据你的代码,使用正确的getter:

<s:iterator value="documents">  
    <s:property value="name" /></br> 
</s:iterator> 

有两点要注意:documents应该有可能被宣布为List,不ArrayList,尽管在这种情况下,它几乎可以肯定没关系。尽管如此,在实现无关紧要时编码到接口是一种很好的习惯。

我还考虑收紧码一点点:

public String execute() { 
    if (username == null) { 
     message = "Unable to fetch"; 
     return "failure"; 
    } 

    docsmx = cs.getData();    
    return "success"; 
} 

这使得一个更自然的阅读,使之更清楚的两种状态(成功或失败),让他们非常鲜明,并稍短。