2011-10-16 6 views
0

을 생성 할 수있는 방법, 나는JSF 2.0 : 나는 JSP를 사용하던 때 동적으로 내 응용 프로그램에서 입력 구성 요소

public class Constants { 
    ... 
    public static final int MAX_NUM_OF_PICTURES = 2 
    ... 
} 

이전 클래스 상수 다음, 나는 동적으로이 기준으로 파일을 업로드 입력 필드를 렌더링 관리 다음과 같이 상수 :

<% 
    for (int i = 1; i < Constants.MAX_NUM_OF_PICTURES + 1; i++) { 
%> 
<tr> 
    <td>Upload Picture <%= i %></td> 
    <td><input name="<%= i%>" type="file" /></td> 
</tr> 
<tr> 
    <td>Description <%= i %></td> 
    <td><input type="text" name="<%= "description" + i%>" id="description" /></td> 
</tr> 
<% 
    } 
%> 

현재 위의 작업을 수행하기 위해 JSF를 사용하려고합니다. 이러한 입력 필드가 동적으로 생성되지 않은 경우, 나는 쉽게 내 백업 콩에 다음과 같은 속성을 정의 할 수 있습니다 :이 필드를 동적으로 생성되기 때문에

@ManagedBean 
@RequestScoped 
public class MrBean { 
    ... 
    private UploadedFile picture1; 
    private String  pictDescription1; 
    ... 
} 

그러나, 나는에 정의 할 필요가 얼마나 많은 특성을 알 수 없다 이러한 업로드 된 파일을 캡처하려면 미리 이동하십시오.

누군가 내가이 문제를 어떻게 해결해야하는지에 대해 조언을 해줄 수 있다면 매우 감사 할 것입니다.

안부,

제임스 트란

답변

2

다른 자바 빈즈 클래스에서 이러한 속성을 넣어 및 관리 빈에있는 그 자바 빈즈의 컬렉션을 가지고있다.

예.

public class Picture { 

    private UploadedFile file; 
    private String description; 

    // ... 
} 

@ManagedBean 
@ViewScoped 
public class Profile { 

    List<Picture> pictures; 

    public Profile() { 
     pictures = new ArrayList<Picture>(); 

     for (int i = 0; i < Constants.MAX_NUM_OF_PICTURES; i++) { 
      pictures.add(new Picture()); 
     } 
    } 

    // ... 
} 

그런 다음 예를 <ui:repeat>에 대한 위에 루프 (또는 어쩌면 <h:dataTable>,하지만 당신은 하나가 아닌 두 개의 행을 반복하려면이 정말 적합하지 않습니다).

<table> 
    <ui:repeat value="#{profile.pictures}" var="picture" varStatus="loop"> 
     <tr> 
      <td>Upload Picture #{loop.index + 1}</td> 
      <td><t:inputFileUpload value="#{picture.file}" /></td> 
     </tr> 
     <tr> 
      <td>Description #{loop.index + 1}</td> 
      <td><h:inputText value="#{picture.description}" /></td> 
     </tr> 
    </ui:repeat> 
</table> 

파일 업로드에 사용하는 구성 요소 라이브러리가 무엇인지 잘 모르기 때문에 토마 호크라고 가정했습니다.

+0

도움을 주셔서 감사합니다. 나는'ui : repeat' 태그에 대해 전혀 알지 못했습니다. 토마 호크에 대해서 당신 말이 맞아요. 사실,이 파일 업로드 기능을 구현하기 위해 [미니 튜토리얼] (http://stackoverflow.com/questions/5418292/jsf-2-0-file-upload/5424229#5424229)을 따랐습니다. =) –