gpt4 book ai didi

java - Spring mvc,制作菜单数据对象

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

我真的是JAVA、spring mvc的新手。

我对“代码”的理解太差了,我什至无法想象我将如何应对即将出现的错误。

所以这个问题听起来就像“为我做这个!”。 (实际上可以)

无论如何,我正在尝试制作一个两层深度的菜单。它的结构如下所示。

TopMenu
::: menuNo
::: menuName
::: memberType
::: url
::: sort
::: subMenus
::: menuNo
::: menuName
::: memberType
::: url
::: sort

TopMenu2
::: menuNo2
::: menuName2
::: memberType2
::: url2
.
.
.
.

所以我为此创建了一个 Bean 类。

public class MenuInfoBean {

private String menuNo;
private String menuName;
private String memberType;
private String url;
private int sort;
List<MenuInfoBean> subMenus;

public MenuInfoBean() {

}

public String getMenuNo() {
return menuNo;
}

public void setMenuNo(String menuNo) {
this.menuNo = menuNo;
}

public String getMenuName() {
return menuName;
}

public void setMenuName(String menuName) {
this.menuName = menuName;
}

public String getMemberType() {
return memberType;
}

public void setMemberType(String memberType) {
this.memberType = memberType;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public int getSort() {
return sort;
}

public void setSort(int sort) {
this.sort = sort;
}

public List<MenuInfoBean> getSubMenus() {
return subMenus;
}

public void setSubMenus(MenuInfoBean subMenus) {
subMenus.menuName = subMenus.menuName;
subMenus.memberType = subMenus.memberType;
subMenus.url = subMenus.url;
subMenus.sort = subMenus.sort;
}
}

尚未决定使用哪个数据库,因此我暂时使用菜单数据的属性。

#TopMenu List
topmenu = M1000,M9000


#SubMenu List
M1000.submenu =
M9000.submenu = M9001,M9002,M9003,M9004



#TopMenu Info
#M1000 APPLICATION
M1000.menuName=APPLICATION
M1000.url=
M1000.memberType=00,10
M1000.sort=1

#M9000 ADMIN
M9000.menuName=ADMIN
M9000.url=/SYS01/memberList.mon
M9000.memberType=00,10
M9000.sort=1





#SubMenu Info
#M9000 ADMIN's
M9001.menuName=Member mgmt
M9001.url=/SYS01/memberList.mon
M9001.memberType=00,10
M9001.sort=1

M9002.menuName=menu2
M9002.url=/SYS01/memberList.mon
M9002.memberType=00,10
M9002.sort=1

M9003.menuName=menu3
M9003.url=/SYS01/memberList.mon
M9003.memberType=00,10
M9003.sort=1

M9004.menuName=menu4
M9004.url=/SYS01/memberList.mon
M9004.memberType=00,10
M9004.sort=1

在这里,我获取数据并尝试将它们放入列表中。

public class MenuManager {

public List<MenuInfoBean> getMenus(String permissionCode) {
LabelProperties msgResource = LabelProperties.getInstance();

MenuInfoBean menuInfo = new MenuInfoBean();
List<MenuInfoBean> menuList = new ArrayList<MenuInfoBean>();

String topMenu = msgResource.getProperty("topmenu");
String[] topMenuItems = topMenu.split(",");

for (int i = 0; topMenuItems.length > i; i++ ) {


String subMenuName = msgResource.getProperty(topMenuItems[i] + ".submenu");

if ( subMenuName.isEmpty() == false ) {
menuInfo.setMenuName(msgResource.getProperty(subMenuName + ".menuName"));
menuInfo.setMemberType(msgResource.getProperty(subMenuName + ".memberType"));
menuInfo.setUrl(msgResource.getProperty(subMenuName + ".url"));
menuInfo.setSort(Integer.parseInt(msgResource.getProperty(subMenuName + ".sort")));
menuInfo.setSubMenus(menuInfo);
} else {
menuInfo.setMenuName("");
menuInfo.setSubMenus(menuInfo);
}

menuInfo.setMenuNo("");
menuInfo.setMenuName(msgResource.getProperty(topMenuItems[i] + ".menuName"));
menuInfo.setMemberType(msgResource.getProperty(topMenuItems[i] + ".memberType"));
menuInfo.setUrl(msgResource.getProperty(topMenuItems[i] + ".url"));
menuInfo.setSort(Integer.parseInt(msgResource.getProperty(topMenuItems[i] + ".sort")));

menuList.add(menuInfo);
}

return menuList;
}
}

getProperty 方法效果很好。它正确获取属性值。

但正如您可能注意到的,正在生成一些空数据。

为了忽略这个NullPointerException,我做了

List<MenuInfoBean> menuList = new ArrayList<MenuInfoBean>();

因此异常已成功避免。但是出现了另一个错误,这在本文中并不重要......

无论如何,在尝试解决新错误时,我查看了 menuInfo 数据,发现出现了问题。

子菜单保存了顶级菜单的数据!

<小时/>

问题是,如何使用 MenuInfoBean 制作这个菜单,就像我在本文顶部提到的结构一样?

为什么 subMenus 数据保存 topMenu 的属性?

我先设置subMenus数据,然后再设置topMenu数据!为什么会发生这种情况?

最佳答案

首先,我通过添加附加方法 add(Meun) 来更新域对象

import java.util.ArrayList;
import java.util.List;

public class MenuInfoBean
{
private String menuNo;
private String menuName;
private String memberType;
private String url;
private int sort;
List<MenuInfoBean> subMenus;

public MenuInfoBean()
{

}

public String getMenuNo()
{
return menuNo;
}

public void setMenuNo(String menuNo)
{
this.menuNo = menuNo;
}

public String getMenuName()
{
return menuName;
}

public void setMenuName(String menuName)
{
this.menuName = menuName;
}

public String getMemberType()
{
return memberType;
}

public void setMemberType(String memberType)
{
this.memberType = memberType;
}

public String getUrl()
{
return url;
}

public void setUrl(String url)
{
this.url = url;
}

public int getSort()
{
return sort;
}

public void setSort(int sort)
{
this.sort = sort;
}

public List<MenuInfoBean> getSubMenus()
{
return subMenus;
}

// This is new method added to the bean
public void addSubMenuItem(MenuInfoBean menuInfoBean)
{
if (subMenus == null)
subMenus = new ArrayList<MenuInfoBean>();
subMenus.add(menuInfoBean);
}
}

这里是生成菜单并返回的类(查看获取菜单方法):

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang.StringUtils;

public class MenuExtractionComponent
{
public List<MenuInfoBean> getMenus(String permissionCode)
{
LabelProperties msgResource = LabelProperties.getInstance();
List<MenuInfoBean> menuList = new ArrayList<MenuInfoBean>();
String topMenu = msgResource.getProperty("topmenu");
List<String> topMenuItems = new ArrayList<String>();
// Checking is top menu empty
if (StringUtils.isNotBlank(topMenu))
{
topMenuItems.addAll(Arrays.asList(topMenu.split(",")));
}

for (String topMenuItem : topMenuItems)
{

// Setting top menu details
MenuInfoBean menuInfo = new MenuInfoBean();
menuInfo.setMenuNo("");
menuInfo.setMenuName(msgResource.getProperty(topMenuItem + ".menuName"));
menuInfo.setMemberType(msgResource.getProperty(topMenuItem + ".memberType"));
menuInfo.setUrl(msgResource.getProperty(topMenuItem + ".url"));
menuInfo.setSort(Integer.parseInt(msgResource.getProperty(topMenuItem + ".sort")));

String subMenu = msgResource.getProperty(topMenuItem + ".submenu");
List<String> subMenuItems = new ArrayList<String>();
// Checking is sub menu empty
if (StringUtils.isNotBlank(subMenu))
{
subMenuItems.addAll(Arrays.asList(subMenu.split(",")));
}

for (String subMenuItem : subMenuItems)
{
MenuInfoBean subMenuInfo = new MenuInfoBean();
subMenuInfo.setMenuName(msgResource.getProperty(subMenuItem + ".menuName"));
subMenuInfo.setMemberType(msgResource.getProperty(subMenuItem + ".memberType"));
subMenuInfo.setUrl(msgResource.getProperty(subMenuItem + ".url"));
subMenuInfo.setSort(Integer.parseInt(msgResource.getProperty(subMenuItem + ".sort")));
menuInfo.addSubMenuItem(subMenuInfo);
}
menuList.add(menuInfo);
}

return menuList;
}

}

关于java - Spring mvc,制作菜单数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027288/

25 4 0