gpt4 book ai didi

jsf-2 - 如何在 jsf2 (richfaces) 中动态呈现面板菜单项

转载 作者:行者123 更新时间:2023-12-01 23:55:35 25 4
gpt4 key购买 nike

我是 JSF 2.0 的新手,正在尝试将面板菜单项动态呈现到我的 xhtml 页面中。例如:

Header_1
|---SubHeader_1
| |----Item_1.1
| |----Item_1.2
| |----Item_1.3
|---SubHeader_2
| |----Item_2.1
| |----Item_2.2

我想从数据库中在我的 home.xhtml 中动态加载 Item_1.xItem_2.x。请提供您宝贵的建议,我该怎么做。

最佳答案

您可以尝试下面的代码:希望这对您有所帮助-

菜单项的数据由 MenuItem 类表示

public class MenuItem {
private int id;
private String label;

public MenuItem(String label, int id) {
super();
this.label = label;
this.id = id;
}

public int getId() {
return this.id;
}

public String getLabel() {
return this.label;
}

public void setId(int id) {
this.id = id;
}

public void setLabel(String label) {
this.label = label;
}

@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("MenuItem [id=");
builder.append(this.id);
builder.append(", label=");
builder.append(this.label);
builder.append("]");
return builder.toString();
}
}

DynamicMenu 类支持动态菜单。它提供菜单项列表和操作方法:

import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.jboss.seam.annotations.Name;

@Name("dynMenu")
public class DynamicMenu {

private Logger log = Logger.getLogger(DynamicMenu.class.getName());

public void action(int id) {
log.info("Action called with menu item id: " + id);
}

public List<menuitem> getMenuItems() {

List<menuitem> menuItems = new ArrayList<menuitem>();

menuItems.add(new MenuItem("Menu Item #1", 1));
menuItems.add(new MenuItem("Menu Item #2", 2));
menuItems.add(new MenuItem("Menu Item #3", 3));

return menuItems;
}
}

以下代码片段包含动态菜单 xhtml 示例。动态菜单项中的键是 <c:forEach>迭代器。命名空间声明很重要,应该是xmlns:c="http://java.sun.com/jstl/core" .如果你使用 xmlns:c="http://java.sun.com/jsp/jstl/core"命名空间,迭代器将不起作用!

<h:form xmlns:h="http://java.sun.com/jsf/html">
<rich:dropDownMenu value="Dynamic Menu Item Example" style="text-decoration:none;">
<c:forEach xmlns:c="http://java.sun.com/jstl/core" var="item"
items="#{dynMenu.getMenuItems()}">

<rich:menuItem id="menuItem#{item.id}" submitMode="ajax"
value="#{item.label}" action="#{dynMenu.action(item.id)}">
</rich:menuItem>
</c:forEach>
</rich:dropDownMenu>
</h:form>

关于jsf-2 - 如何在 jsf2 (richfaces) 中动态呈现面板菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23971012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com