我有一个更新窗体,使用复合键所有组合键都显示在输出框中,因为每个复合键都有隐藏字段。验证错误后,这些输出框值为空。我该如何解决这个问题。我在同一个页面上,所以它没有价值。JSF验证错误,丢失值
1
A
回答
2
这的确是的非直观的行为(我曾经在钻嘴鱼科的问题清单提交了issue反对,但他们似乎并没有用它做任何事情)。整个问题是,组件的值不必要的是也进入整个验证周期,而没有用户控制输入的手段。验证失败时它会丢失。至少有三种方法可以解决这种非直观的行为。
第一种方式是使用在而不是binding
:
<h:inputHidden binding="#{bean.hidden}" />
这样的值不会发生不必要的验证周期。然而,这需要在支持bean代码中获取/设置值的方式进行更改。例如:
private HtmlInputHidden hidden = new HtmlInputHidden(); // +getter +setter.
public void setHiddenValue(Object hiddenValue) {
hidden.setValue(hiddenValue);
}
public Object getHiddenValue() {
return hidden.getValue();
}
二(和IMHO的首选方式)是使用Tomahawk的t:saveState
代替。
<t:saveState value="#{bean.property}" />
主要优点是您不需要更改支持bean代码中的任何内容。它将在应用请求值阶段提前恢复该值。你只需要添加额外的库,如果还没有完成的话,但是Tomahawk比t:saveState
提供更多的优势,比如基本的JSF实现丢失的组件/功能t:inputFileUpload
,t:dataList
,t:dataTable preserveDataModel="true"
,t:selectOneRadio layout="spread"
等等,它是值得的努力。
第三种方法是将其存储在会话范围的bean中,但实际上不希望为请求范围的变量执行此操作。它只会给“wtf?”在最终用户在同一会话中打开多个选项卡/窗口时的体验。
相关问题
- 1. JSF验证错误:正确的值丢失
- 2. 验证失败后JSF <t:inputFileUpload>值丢失
- 3. JSF自定义UISelectOne回发错误;验证错误:值无效
- 4. 焦点丢失后使用ajax触发JSF验证
- 5. proxmox错误:验证失败
- 6. 验证失败错误parse.com
- 7. 验证失败错误
- 8. 用户验证丢失率
- 9. 当验证码错误表单数据丢失
- 10. 验证错误发生时丢失的参数
- 11. WooCommerce api身份验证错误oauth_consumer_key参数丢失
- 12. ManagementForm数据丢失错误而表单集验证
- 13. JSF转换器:验证错误:值无效
- 14. JSF转换器验证错误:值无效selectOneMenu用于UIComponent
- 15. svn SSL错误:证书验证失败?
- 16. Twitter4j IllegalStateException:身份验证凭证丢失
- 17. Android Twitter4J - 验证凭证丢失
- 18. W3C验证错误:错误值
- 19. Bean验证VS JSF验证
- 20. 禁用当JSF验证失败
- 21. JSF - 验证失败的焦点组件
- 22. JSF:验证失败javascript回调
- 23. Seam/JSF中的验证失败导航
- 24. 验证错误与验证错误
- 25. facebook错误'验证验证码错误'
- 26. Facebook Android sdk丢失丢失重定向uri验证
- 27. Mongolab MongoError:验证失败错误
- 28. OAuth错误:签名验证失败
- 29. vkCreatePipeline失败并验证层段错误
- 30. Esper:EPL“选择”失败du验证错误