我遇到一个奇怪的问题与<p:pickList>
。当我打开一个带有此pickList的对话框并使用RemoveAll按钮从目标列表中清除所有项目并使用<p:commandButton>
提交时,目标列表中的旧项目仍然出现。我已经给了属性required=true
的pickList。奇怪的行为是,当我提交它时,出现一个工具提示,说该字段是强制性的。
因此,如果项目正在清除并且required
属性工作正常,为什么旧项目重新出现?这个问题的解决方法是什么?
<p:pickList id="selectedId" value="#{someDialog.selectedItem}"
var="item" itemValue="#{item}" required="true"
converter="pickListConverter" requiredMessage="#{msg.required_message}"
styleClass="#{component.valid ? '': 'ui-state-error'}">
</p:pickList>
编辑: Backing Bean -我只发布相关方法。 SomeDialog.java
private DualListModel<Item> selectedItem = new DualListModel<Item>();
//Its getters and setters
public final void afterSave(final ParamObject pObject) {
pObject.getRelevantData().clear();
pObject.getRelevantData().addAll(selectedItem.getTarget());
}
ParamObject . java
private List<Item> relevantData = new ArrayList<Item>();
//Setters and Getters
正如@Xtreme Biker提到的,它在你的后台bean中。
当您第一次提交列表时,您在后台bean中设置了它。当你第二次打开对话框时,它已经在那里了。即使您按下RemoveAll,它也只能在您的浏览器中删除,它不能与backing bean一起工作。您的提交将无法工作,因为您设置了required=true.
所以你可以选择以下选项之一:
- remove required=true,每次提交后,你需要按RemoveAll并再次提交空列表(它不是一个选项)。 在后台bean中完成所有需要的任务后,清除someDialog。选择项值,更新和关闭对话框。每次打开对话框清除一些对话框。
我希望它能帮助我,因为我也是新来的。