- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试在树中添加上下文菜单以执行自定义操作。这棵树是在覆盖面板内实现的。我观察到 contextMenu 仅出现在随机情况下,例如在选择和取消选择树上的某些元素之后。有什么想法吗?
<p:overlayPanel id="advancedSearchPanel"
styleClass="ui-advanced-search-overlay"
for="advancedSearch"
hideEffect="fade"
my="right top"
widgetVar="advancedSearchPanelWidgetVar" >
<ui:include src="/search/advancedSearch-form.xhtml"/>
</p:overlayPanel>
高级搜索表单
<p:panelGrid id="panelAdvanced" styleClass="borderless">
...
<p:row>
<p:column colspan="4">
<p:outputLabel value="#{text['searchForm.classifiers']}" for="treeClassifier" styleClass="paddingLabelGrid"/>
<p:contextMenu id="contextSearch" for="treeClassifier">
<p:menuitem value="Escolha todos" update=":searchForm:treeClassifier" actionListener="#{navBarController.displaySelectedSingle}"/>
</p:contextMenu>
<p:tree id="treeClassifier"
value="#{navBarController.rootClassifier}"
var="node" selectionMode="checkbox"
selection="#{navBarController.selectedClassifiers}"
style="height: 200px;width: 540px; margin-bottom: 0px; overflow: auto"
propagateSelectionDown="false"
propagateSelectionUp="false">
<p:ajax event="select" update=":searchForm:btnSearch"/>
<p:ajax event="unselect" update=":searchForm:btnSearch"/>
<p:treeNode expandedIcon="ui-icon-folder-open" collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{node.description}(#{node.code})"/>
</p:treeNode>
</p:tree>
</p:column>
</p:row>
...
最佳答案
这样试试:
我的 advancedSearch-form.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">
<h:form id="searchForm">
<p:panelGrid id="panelAdvanced" styleClass="borderless">
<p:row>
<p:column colspan="4">
<p:contextMenu id="contextSearch" for="treeClassifier">
<p:menuitem value="Escolha todos" update="treeClassifier" actionListener="#{treeView.displaySelectedSingle}"/>
</p:contextMenu>
<p:tree id="treeClassifier" value="#{treeView.root}" var="node" selectionMode="checkbox" selection="#{treeView.selectedClassifiers}"
style="height: 200px;width: 540px; margin-bottom: 0px; overflow: auto"
propagateSelectionDown="false"
propagateSelectionUp="false">
<p:ajax event="select" global="false" listener="#{treeView.reset}" />
<p:ajax event="unselect" global="false" listener="#{treeView.reset}" />
<p:ajax event="contextMenu" global="false" listener="#{treeView.onContextMenu}"/>
<p:treeNode expandedIcon="ui-icon-folder-open" collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{node.nodeName}"/>
</p:treeNode>
</p:tree>
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</ui:composition>
还有我的 bean :
@Component(value="treeView")
@Scope(value = "session")
public class TreeView implements Serializable {
private TreeNode[] selectedClassifiers;
public TreeNode[] getSelectedClassifiers() {
return selectedClassifiers;
}
public void setSelectedClassifiers(TreeNode[] selectedClassifiers) {
this.selectedClassifiers = selectedClassifiers;
}
private TreeNode selectedClassifier;
public void reset(){
selectedClassifier = null;
}
public void displaySelectedSingle(){
if(selectedClassifier != null){
List<TreeNode> selected = new ArrayList<TreeNode>();
for(int i=0; i < selectedClassifiers.length; i++){
selected.add(selectedClassifiers[i]);
if(selectedClassifiers[i].equals(selectedClassifier))
selected.addAll(selectionRecursive(selectedClassifier));
}
selectedClassifiers = selected.toArray(new TreeNode[selected.size()]);
}
}
public void onContextMenu(NodeSelectEvent event){
selectedClassifier = event.getTreeNode();
}
public List<TreeNode> selectionRecursive(TreeNode node){
List<TreeNode> selected = node.getChildren();
for(TreeNode child : node.getChildren()){
selected.addAll(selectionRecursive(child));
child.setSelected(true);
}
return selected;
}
}
方法 selectionRecursive(TreeNode node) 需要调试,但在我的例子中一切都很好。
关于java - Primefaces:ContextMenu 未出现在 overlayPanel 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26779735/
我想做 PrimeFaces Overlay Panel即使用户单击工具提示之外的区域也保持可见。关闭工具提示的唯一方法是使用其上的“关闭”按钮。 如何做到这一点? 最佳答案 如果您使用 Primef
我正在尝试将 OverlayPanel 显示到 Carousel 中,但此面板比 Carousel 宽,因此未完全显示其内容。 我试过添加 z-index面板的样式值,但它仍然保留在 Carousel
我使用的是primefaces 3.4,我在 p:overlaypanel 中有一个 p:calendar 。当我选择日期时,覆盖面板关闭(使用 Google Chrome 时)当我使用 Firefo
点击目标组件(commandButton)时,页面显示 Primefaces 的 overlayPanel: // contents of the overlay panel 我需要在页面加载
我正在学习 Angular。我创建了一个小部件。我正在使用 primeng组件,即 p-overlaypanel .当我单击输入字段时,面板会打开。我有两个按钮 Apply和 Cancel在覆盖面板本
今天我发现了P5的一个新bug。当我更新覆盖面板所指的按钮时,它不再起作用 - 覆盖面板不再显示。 作为解决方法,我确实使用了 PF('widgetVar').loadContents(); 但这感觉
我将 Primefaces 3.2 与 jsf 2 和 glassfish 3.1.2 一起使用。 我有一个包含用户头像的用户 p:dataTable。每当用户将鼠标移到头像上时,一个 p:overl
我尝试在覆盖面板中显示弹出式日历,但是当我单击关联的输入框时,日历显示在覆盖面板后面,我看不到日历的标题。这是我的代码:
我尝试在树中添加上下文菜单以执行自定义操作。这棵树是在覆盖面板内实现的。我观察到 contextMenu 仅出现在随机情况下,例如在选择和取消选择树上的某些元素之后。有什么想法吗?
我想在覆盖面板内显示数据表中的键值对列表,其中每一对是一行。单击键值对时,我想更新 -Element,位于覆盖面板之外,具有所选行的键值,同时关闭覆盖面板。 我刚刚从 PF 4.0 迁移到 PF 6
我是一名优秀的程序员,十分优秀!