我想从orderList获取所选项目。在我看来,这个功能缺失。 PF中是否有功能?或者是否有可能的解决方法?
我非常感谢你的回答!
我的技术堆栈:
答案 0 :(得分:1)
我已使用删除按钮解决了这个问题。代码段如下:
<p:orderList id="layersList" value="#{mappingLayerController.layers}"
converter="layerConverter" var="layer" itemValue="#{layer}"
controlsLocation="left">
<p:column>
<h:outputText value="#{layer.layerName}"/>
</p:column>
<p:column style="width: 4%">
<p:commandButton icon="ui-icon-close" actionListener="#{controller.deleteLayer()}">
<f:param name="layerName" value="#{layer.layerName}" />
</p:commandButton>
</p:column>
</p:orderList>
在支持bean中,您可以通过f:param标记获取提供的参数:
String layerName = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("layerName");
我希望这会有所帮助。
答案 1 :(得分:1)
我遇到了同样的问题,试图为orderList
中的每个项目创建一个编辑操作。我尝试将var
传递给操作,创建一个动作侦听器与一个属性和一个选择侦听器都没有成功。
我最终使用了dataTable ... draggableRows="true"
(请参阅展示中的data table reorder)。在数据表中,我可以简单地将var
作为参数传递给动作......所以我想。我遇到了一个问题,重新排序后,点击编辑按钮给了我错误的项目。我创建了一个解决方法,即在重新排序时我更新模型并重绘表格。它有效,但感觉不对。
<p:dataTable id="myTable"
value="#{myBean.myItems}"
var="item"
sortBy="#{item.orderNumber}" sortOrder="ascending"
draggableRows="true">
...
<p:column headerText="Actions">
<p:commandButton title="Edit"
action="#{myBean.edit(item)}"
process="@this">
</p:column>
<p:ajax event="rowReorder"
listener="#{myBean.onSlotContentReorder}"
update="myTable"/>
</p:dataTable>
答案 2 :(得分:1)
在PrimeFaces 5及更高版本中可以使用。没有开箱即用的功能,但可以通过附加的所选项目列表轻松实现。见例子
Java代码
<h:panelGroup id="listGroup">
<p:orderList id="list" value="#{bean.allItems}"
var="item" itemLabel="#{item.code}" itemValue="#{item}"
converter="#{itemConverter}" controlsLocation="none">
<f:facet name="caption">#{msg.listName}</f:facet>
<p:ajax event="select" listener="#{bean.onSelect}" />
<p:ajax event="unselect" listener="#{bean.onUnselect}" />
</p:orderList>
<p:contextMenu id="listMenu" for="list">
<p:menuitem value="#{msg.delete}"
actionListener="#{bean.deleteSelected}"
update="listGroup, messages"
rendered="#{not empty bean.allItems}" />
</p:contextMenu>
</h:panelGroup>
<强> XHTML 强>
else if(date_holder.equals("today"))
{
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
}