2011-12-21 5 views
-1

이 질문은 여러 스레드에서 요청받을 수 있습니다 ...하지만Struts2 반복

아래에 표시로 정답

자바 콩

package com.example; 

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

자바 빈즈의 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; 가져 오기 java.util.ArrayList; Struts2 반복자 태그와

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로

이 Iterated이 ...

내가 잘못 어떤 일을하고 있는가하면 버킷 포함 된 자바 빈즈의 ArrayList를 표시하지 왜

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

질문 ??? 버전을 따라 관련 KARTHIK

답변

1

, 당신은 docsmx (선호, 사전 S2.1.mumble)에 대한 게터를 제공하거나해야 하나 docsmx 공개 (바람직하지으로, S2.1 +) . 이 경우는 거의 확실하게 문제가되지 않지만, documents는 가능성이 List하지 ArrayList 선언해야합니다 : 노트의 부부

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

:

은 또는, 당신의 코드를 기반으로, 올바른 게터를 사용 . 하지만 구현이 중요하지 않을 때 인터페이스에 코딩하는 것은 좋은 습관입니다.

나는 또한 코드를 약간 위로 강화라고 생각 하는데요 :

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

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

이 더 자연스러운 읽기가 더 명확 두 국가가 (성공과 실패)이 무엇인지, 뚜렷한를 유지하게 허용을 약간 더 짧습니다.