表单 – h:输入文件值在其他输入验证失败后变为空白,如何保留其值?

表单 – h:输入文件值在其他输入验证失败后变为空白,如何保留其值?,第1张

概述对于许多其他标准JSF组件,当提交表单并且服务器端验证失败时,将再次呈现页面,并填充先前提交的表单字段以供用户编辑和重新提交.我正在寻找新的h:inputFile中的相同行为,而我却找不到它. 举个简单的例子,我有一个带有h:inputText和h:inputFile的表单. inputText启用了服务器端验证.如果用户输入无效文本并选择文件并提交,则上载文件并使用文本字段中的无效文本和表示验证 对于许多其他标准JsF组件,当提交表单并且服务器端验证失败时,将再次呈现页面,并填充先前提交的表单字段以供用户编辑和重新提交.我正在寻找新的h:inputfile中的相同行为,而我却找不到它.

举个简单的例子,我有一个带有h:inputText和h:inputfile的表单. inputText启用了服务器端验证.如果用户输入无效文本并选择文件并提交,则上载文件并使用文本字段中的无效文本和表示验证结果的h:消息呈现表单.我正在尝试解决的问题是此时他们更正了他们的文本输入,但必须再次选择一个文件,然后再次上传.有什么基本的我缺少,或者这是预期的行为?

解决方法 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

总结

以上是内存溢出为你收集整理的表单 – h:输入文件值在其他输入验证失败后变为空白,如何保留其值?全部内容,希望文章能够帮你解决表单 – h:输入文件值在其他输入验证失败后变为空白,如何保留其值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1107417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存