Validation JSF-强制UIInput组件刷新
我目前正在从事一个JSF1.2项目(IBM实现和“公司层”) 问题 这里的情况(项目数量仅为示例),简单的CRUDValidation JSF-强制UIInput组件刷新,validation,jsf,refresh,lifecycle,Validation,Jsf,Refresh,Lifecycle,我目前正在从事一个JSF1.2项目(IBM实现和“公司层”) 问题 这里的情况(项目数量仅为示例),简单的CRUD 列表项 我有一份物品清单 我单击项目2查看详细信息 我点击修改,修改页面显示项目2的值 使用按钮“后退”和immediate=“true”(因为我们不想提交修改)返回列表 项目4的详情 修改项目4>显示项目2的值 但是 如果我将“后退”按钮的“立即”属性设置为false,则第4项的值正常 如果我将inputText组件的“禁用”属性设置为true,则第4项的值可以 如果我使用(U
immediate=“true”
(因为我们不想提交修改)返回列表- 如果我将“后退”按钮的“立即”属性设置为
,则第4项的值正常false
- 如果我将inputText组件的“禁用”属性设置为
,则第4项的值可以true
- 如果我使用
(UIInput)
setSubmittedValue()
方法。
“清晰”的方法是无效的。我用这段代码尝试了一个元素和完整的组件树
public void cleanAllChildren(List<UIComponentBase> list){
for(UIComponentBase c : list){
this.cleanAllChildren(c.getChildren());
c.getChildren().clear();
}
}
public void cleanalchildren(列表){
用于(UIComponentBase c:列表){
this.cleanalchildren(c.getChildren());
c、 getChildren().clear();
}
}
但是没有成功。我来了。
我错过什么了吗?有没有一个我没有看到的巧妙的解决方案?我不太熟悉JSF的生命周期。将包含请求范围数据的bean放在请求范围内,而不是会话范围内
您可能需要在会话中“保存”DB调用的整个列表,以及在同一会话中的后续请求中保留值的所有工作。您可以为此使用单独的会话范围bean,例如
DataManager
。然后您应该有一个请求范围的bean来表示所选项目,例如DataItem
。在托管属性注入的帮助下,您可以将这两个bean家族化。您说得对,BalusC,我的bean正在会话中,因为我正在等待Cobol服务层。我不认为这是原因。2010年,我一回到工作岗位,就会证实这个理论。谢谢你的帮助。它很有魅力;)对于有相同问题的人,您可以在这里和BalusC的博客上获得更多信息