【问题标题】:Selected file disappears after validation of other fields验证其他字段后所选文件消失
【发布时间】:2011-12-27 10:31:09
【问题描述】:

我正在使用带有 3 个标签的 <rich:tabpanel>。在第二个选项卡中,我有 3 个 <rich:fileUpload> 组件。所有 3 个字段都是必填项。因此,我在提交页面内容时在支持 bean 中执行验证。

如果我在其中一个文件上传组件中选择一个文件并将其他 2 个留空,那么我会按预期收到 2 个空组件的验证消息。然而,第一个组件也被重新渲染并且不保留所选文件,即使文件内容仍存储在支持 bean 的属性中。

如何在重新渲染时保留所选文件?

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    只是不要重新渲染输入字段本身,而只重新渲染验证消息的持有者。您可以使用<a4j:commandButton> 执行此操作,其中您在reRender 属性中指定消息组件的ID(我假设您使用的是RichFaces 3.3,而不是4.0,因为默认情况下不可能有当前 4.0 中用于文件上传的单个文件选择)。

    请注意,您不需要在操作方法中验证需求。只需在输入组件上设置required="true" 就足够了。

    【讨论】:

    • 感谢 BalusC。 Big Fan :) 这也适用于rich:fileUpload 吗?我会再试一次。我没有做任何特定的重新渲染。我有一个 用于提交,一旦提交,新组件就会出现。再次感谢您的宝贵时间。
    • 哦,我的错误,因为您使用的是 RichFaces,我希望您使用的是 <a4j:commandButton>,它执行 Ajax 提交和重新渲染。我已经编辑了答案。
    • 非常感谢 BalusC。我会试试这个:)
    • 嗨 - 尝试在
      中使用 a4j:commandButton,但整个页面似乎仍被刷新,而不是我设置为重新渲染的组件。 required=true 似乎也不适用于rich:fileUpload 组件。
    • 很抱歉浪费了您的时间,愚蠢的我 - 我将控件返回到页面,而不是在验证失败时设置 null。但是现在没有显示错误消息:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多