好吧,我想用PrimeFaces做这样的事情,但我不知道如何与我的<f:selectItems>
并排放置一个按钮来删除该项目。
<p:selectOneMenu id="pesquisaSalva"
rendered="#{!mapaEleitoralControl.desabiliarRadioPesquisaSalva}"
disabled="#{mapaEleitoralControl.desabiliarRadioPesquisaSalva}"
value="#{mapaEleitoralControl.parametrosPesquisaSalva}"
var="teste">
<f:selectItem itemLabel="Selecione a pesquisa salva"
itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{mapaEleitoralControl.listaPesquisaSalvasMapaEleitoral}"
var="pesquisaSalvaME"
itemValue="#{pesquisaSalvaME.anoEleicao}"
itemLabel="#{pesquisaSalvaME.anoEleicao}"/>
<p:column>
#{teste}
</p:column>
<p:column>
<p:commandButton id="iconOnly" icon="ui-icon-trash" title="Icon Only" />
</p:column>
<p:ajax event="change"
update="mapaEleitoralForm"
global="false"
listener="#{mapaEleitoralControl.selectPesquisaSalvaGerarMapa}" />
</p:selectOneMenu>
答案 0 :(得分:0)
我必须解决同样的问题。我这样做了(可能有更好的方法)。
<p:selectOneMenu styleClass="bookMarkMenu" id="bookmarkMenu" value="#{bean.bookmark}" var="bookmark" style="width:150px;" converter="#{entityConverter}" panelStyle="width:300px;">
<f:selectItem itemLabel="#{messages['bookmark.select']}" itemVaule=""/>
<f:selectItems value="#{bean.bookmarks}" var="b" itemLabel="#{b.description}" itemValue="#{b}"/>
<p:column style="width:100px;">
<h:outputText style="padding-left:8px;" value="#{bookmark.description}" rendered="#{bookmark ne null}"/>
</p:column>
<p:column style="width:15px; padding:0px;">
<p:commandLink style="padding: 4px 10px 4px 10px;" onclick="deleteCalled(event,#{bookmark.bookmarkId});"><i class="fa fa-trash-o" aria-hidden="true"></i></p:commandLink>
</p:column>
<p:ajax event="itemSelect" listener="#{bean.onBookmarkSelect}"/>
</p:selectOneMenu>
在其中一个p:列中添加p:commandLink(或按钮)的问题是仍然会调用项目选择的侦听器。这就是为什么我调用javascript方法deleteCalled onclick。
<p:remoteCommand name="deleteBookmark" action="#{bean.deleteBookmark()}" update="#{p:component('bookmarkDec')}"/>
<script>
function deleteCalled(event,id){
event.stopPropagation();
if(confirm('Do you really want to delete the bookmark?')){
deleteBookmark([{name:'bookmarkId',value: id}]);
}
return false;
}
</script>
在该javascript方法中,您需要停止事件传播,然后调用p:remoteCommand。在这种情况下,我已经传递了书签的ID(我在列表中的项目)。
希望有所帮助。