【问题标题】:multiple p:fileUpload in ui:repeat多个 p:fileUpload 在 ui:repeat
【发布时间】: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 需要禁用&lt;p:fileUpload&gt;mode="simple" 才能工作,如果您不小心忘记这样做。
  • @BalusC 您能否扩展“更好地将模型包装在真实模型对象中而不是依赖循环索引”?我发现我的代码也很糟糕,但我并没有真正的答案。很抱歉没有指定我的版本,我认为 PF 5.2 是最新的。
  • @Tiny 感谢它现在可以使用,我通常使用高级模式,这就是为什么我没有抓住它。请将其发布为答案,以便我接受。在 cmets 中回答问题时,我有点强迫症。 :p

标签: jsf file-upload primefaces jsf-2.2


【解决方案1】:

需要禁用与触发操作的命令组件关联的 ajax 才能使用 mode="simple" 工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2012-04-15
    • 2012-05-26
    相关资源
    最近更新 更多