我遇到<p:pickList>
的奇怪问题。当我打开一个具有此pickList的对话框并使用RemoveAll按钮清除目标列表中的所有项目并使用<p:commandButton>
提交时,仍会显示目标列表中的旧项目。我已经为pickList提供了属性required=true
。奇怪的行为是当我提交它时,会出现一个工具提示,说明该字段是强制性的。
因此,如果项目正在清算且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>
编辑:支持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
答案 0 :(得分:2)
正如@Xtreme Biker在你的支持bean中提到它。
首次提交列表时,将其设置在辅助bean中。第二次打开对话框时,它已经存在。即使您按下RemoveAll,它只会在您的浏览器中删除,但它不适用于支持bean。并且您的提交将无效,因为您已经要求= true。
所以你可以选择以下选项之一:
我希望它会有所帮助,因为我也是新来的。