【发布时间】:2015-10-28 09:34:24
【问题描述】:
我在尝试在 ui:repeat 中使用 p:fileUpload 时遇到问题。用户选择是否要上传文件或选择selectOneMenu 中的实体。我的数组的 getter 或 setter 似乎也没有被调用。
<ui:repeat value="#{adminCreateTeam.teamComposition}" varStatus="status">
<h:panelGroup rendered="#{ (adminCreateTeam.memNew[status.index].booleanValue())}">
<!-- create new user -->
...
<!-- image associated with the user -->
<p:fileUpload
value="#{adminCreateTeam.memPics[status.index]}"
fileLimit="1"
mode="simple"/>
</h:panelGroup>
</ui:repeat>
我尝试使用memPics 的数组和数组列表,在这两种情况下都没有调用它们的getter 和setter。但是,在使用 ArrayList 时,如果我没有从一开始就将空值放入其中,我将拥有一个 indexOutOfBondException。所以我用空值预填充它。我不明白,因为 setter 和 getter 都没有被调用..
所以mempics:
private List<UploadedFile> memPics;
@PostConstruct
public void init() {
teamComposition = new User[5];
memPics = new ArrayList<UploadedFile>();
memPics.add(null);
memPics.add(null);
memPics.add(null);
memPics.add(null);
memPics.add(null);
}
【问题讨论】:
-
如何触发上传文件的动作?与触发操作的命令组件关联的
ajax需要禁用<p:fileUpload>和mode="simple"才能工作,如果您不小心忘记这样做。 -
@BalusC 您能否扩展“更好地将模型包装在真实模型对象中而不是依赖循环索引”?我发现我的代码也很糟糕,但我并没有真正的答案。很抱歉没有指定我的版本,我认为 PF 5.2 是最新的。
-
@Tiny 感谢它现在可以使用,我通常使用高级模式,这就是为什么我没有抓住它。请将其发布为答案,以便我接受。在 cmets 中回答问题时,我有点强迫症。 :p
标签: jsf file-upload primefaces jsf-2.2