2011-12-21 19 views
-1

この質問には、いくつかのスレッドで求められることがあります...しかしStruts2の反復

の下に表示されているように正解

Java Beanが

package com.example; 

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

のJavaBeanのArrayListの作成を微調整ができませんでした

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.example。 import java.util.ArrayList;反復が...

私は間違っていくつかのことをやっているときのJavaBeanを含むバケットのArrayListのが表示されないのはなぜStruts2のイテレータタグ

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

質問と

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の???お使いのバージョンに基づきよろしく カルティク

答えて

1

は、あなたがdocsmx(好ましくは、事前S2.1.mumble)のgetterを提供し、または確認する必要がありどちらかdocsmxパブリック(好ましくはないとして、S2.1 +) 。

それとも、あなたのコードに基づいて、正しいゲッターを使用します。

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

ノートのカップルを:この場合には、それはほぼ確実に重要ではありませんがdocumentsはおそらく、ないArrayListList宣言する必要があります。ただし、実装が重要でない場合は、インターフェイスにコーディングするのは良い習慣です。

私はまた、コードを少し引き締め検討したい:

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

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

これは、より自然な読み取りを可能にする2つの状態(成功と失敗)であるか、それがより明確になり、非常に明確なそれらを保持します、わずかに短い。