我正在使用JSF2.0 + Spring 3.0构建一个应用程序。我的bean在这个应用程序中由Spring管理。
在这个应用程序中我有一个有3个SelectOneMenuItems(JSF)的表单
现在当我提交表单时,它会提交正常但不会从框中删除值。
我在春天尝试了请求范围,但是它产生了另一个问题,即当第一次下拉选择一个值时说国家和我将值发送到省的下一个下拉(根据国家下拉来填充省份)选择),春天认为它是一个新的请求并刷新bean,所以国家的下拉值被删除,我得到NullPointerException
,同时填充省份。
我现在应该怎么做才真的被困住了。请帮忙
答案 0 :(得分:4)
您可以自己创建一个新bean,并使用FacesContext
将其放在所需的范围内。
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("myBean", new MyBean());
通过在代码中使用它,您可以覆盖bean的当前实例并删除旧bean。
答案 1 :(得分:0)
我想说这里的会议范围很好。我认为您需要对下拉列表的选定值进行适当的管理。更改DropDown1后,您需要重置DropDown2和DropDown3。一旦你改变DropDown2重置DropDown3。通过重置,我的意思是仅将有效数据加载或过滤到这些组件的模型中。
您正在使用JSF2。您使用的是f:ajax
代码吗?你有可用的代码片段吗?那里可能存在一个问题,这里有点棘手。
答案 2 :(得分:-1)
您可以使用最适合您用例的View Scope。但是由于Spring 3.0不支持视图范围,因此您需要为Spring创建自定义视图范围实现以进行识别。您可以参考this link作为参考。