gpt4 book ai didi

forms - h :inputFile value becomes blank after submit or validation fail of other input, 如何保留其值?

转载 作者:行者123 更新时间:2023-12-01 08:11:06 24 4
gpt4 key购买 nike

对于许多其他标准 JSF 组件,当提交表单且服务器端验证失败时,页面将再次呈现,并填充先前提交的表单字段以供用户编辑和重新提交。我正在从新的 h:inputFile 中寻找相同的行为,但我没有找到它。

作为一个简单的例子,我有一个带有 h:inputText 和 h:inputFile 的表单。 inputText 启用了服务器端验证。如果用户输入无效文本并选择一个文件并提交,则该文件将被上传,并且表单将在文本字段中使用无效文本和指示验证结果的 h:message 呈现。我试图解决的问题是此时他们更正了他们的文本输入,但必须再次选择一个文件,然后再次上传。是否有一些基本的我遗漏了,或者这是预期的行为?

最佳答案

HTML 不允许预填充 <input type="file">否则会打开 huge security hole .由于 JSF 在此上下文中只是一个 HTML 代码生成器,因此它对此无能为力。

最好的办法是 ajax-submit 表单和 ajax-render 只有真正需要更新的部分,例如消息(即不要使用 render="@form" )。这样初始输入值保持不变。

例如。

<h:form enctype="multipart/form-data">
<h:inputText id="text" />
<h:message id="m_text" for="text" />

<h:inputFile id="file" />
<h:message id="m_file" for="file" />

<h:commandButton value="submit">
<f:ajax execute="@form" render="m_text m_file" />
</h:commandButton>
</h:form>

也可以看看:
  • Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes
  • 关于forms - h :inputFile value becomes blank after submit or validation fail of other input, 如何保留其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485870/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com