Jsf <;p:挑选名单>;移除所有按钮后未清除
我在Jsf <;p:挑选名单>;移除所有按钮后未清除,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我在中遇到了一个奇怪的问题。当我打开一个包含此选取列表的对话框,并使用RemoveAll按钮清除目标列表中的所有项目,然后使用提交时,目标列表中的旧项目仍会出现。我已经为pickList提供了属性required=true。奇怪的是,当我提交它时,会出现一个工具提示,说明该字段是必需的 因此,如果项目正在清除并且required属性工作正常,那么为什么会重新出现旧项目?解决这个问题的办法是什么 <p:pickList id="selectedId" value="#{someDialog.
中遇到了一个奇怪的问题。当我打开一个包含此选取列表的对话框,并使用RemoveAll按钮清除目标列表中的所有项目,然后使用
提交时,目标列表中的旧项目仍会出现。我已经为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());
}
private List<Item> relevantData = new ArrayList<Item>();
//Setters and Getters
private DualListModel selectedItem=new DualListModel();
//它的接受者和接受者
公共最终void afterSave(最终参数对象pObject){
POObject.getRelevantData().clear();
pObject.getRelevantData().addAll(selectedItem.getTarget());
}
ParamObject.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());
}
private List<Item> relevantData = new ArrayList<Item>();
//Setters and Getters
private List relevantData=new ArrayList();
//二传手和接球手
正如@Xtreme Biker在你的背景中提到的那样
当您第一次提交列表时,在backingbean中设置它。第二次打开对话框时,它已经在那里了。即使您按下RemoveAll,它也只会在浏览器中删除,不能与支持bean一起使用。您的提交将不起作用,因为您已要求=true
因此,您可以选择以下选项之一:
我希望这会有帮助,因为我也是新来的。你能编写你的支持bean代码吗?我仍然看不出问题所在。您正试图提交一个表单,该表单包含一个必需的选择列表和一个空的目标列表。显然,如果它是必需的,您就不能提交它,jsf正在请求一个必填字段。您必须在目标列表中至少放置一个项目,或者使其成为非必需项。旧项目仍然出现,因为表单的事实没有发送出去。@XtremeBiker-让我澄清一下。在我提交表格之前,旧的项目出现了,这很好。但是,当我单击RemoveAll按钮并提交表单时,旧项目会重新出现。理想情况下,当我这样做时,由于
required
属性,它不应该允许我提交表单。它正在这样做并显示旧项目。这让我很困惑。@XtremeBiker-我的意思是,即使我清除了旧项目,它们也会重新出现在目标列表中。对不起,如果我搞糊涂了。你能发布整个表单吗?很明显,我的支持bean正在从选择列表中删除项目。我通过删除required=true
并打印列表的内容来检查它,该列表在RemoveAll之后为空。那么,问题出在哪里呢?把你的后盾放在这里