如何使用Spring MVC从JSON文件设计侧面菜单栏 [英] How to design side menu bar from json file using spring mvc

查看:101
本文介绍了如何使用Spring MVC从JSON文件设计侧面菜单栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用下面的spring mvc在json文件中使用json文件设计jsp主页中的侧边菜单,这是我的三个文件,jsp页面包含了一个代码,我正在设计侧面菜单json文件的方式包含菜单和子菜单数据,在spring控制器中,我读取json文件并在验证后验证用户,我已将数据发送到我从json文件中获取的jsp,并使其菜单和子菜单 r1和r2这两个不同的菜单

Am trying to design a side menu in jsp home page using json file with spring mvc below is my three files, jsp page contains a code that the way which i am looking to design side menu the json file contains menu and sub menu data, in the spring controller i read json file and validate the user after validation i have send the data to jsp which i am getting from json file and make its menu and sub menu two different menu as r1 and r2

这里我面临的问题是如何从spring控制器到jsp的json数据,并使其成为菜单和子菜单

here what i am facing the problem is how to json data from spring controller to jsp and make it as menu and sub menu

    user 
      adduser
      deleteuser
      updateuser
job
add job
delete job
update job

jsp

<li>
                        <a href="#"><!-- <i class="fa fa-wrench fa-fw"></i> -->User<span class="fa arrow"></span></a>
                        <ul class="nav nav-second-level">
                            <li>
                                <a href="javascript:void(0)">add user</a>
                            </li>
                            <li>
                                <a href="javascript:void(0)">delete user</a>
                            </li>
                            <li>
                                <a href="javascript:void(0)">update user</a>
                            </li>

                        </ul>
                        <!-- /.nav-second-level -->
                    </li>

                    <li>
                        <a href="#"><!-- <i class="fa fa-wrench fa-fw"></i> -->job<span class="fa arrow"></span></a>
                        <ul class="nav nav-second-level">
                            <li>
                                <a href="javascript:void(0)">add job</a>
                            </li>
                            <li>
                                <a href="javascript:void(0)">delete job</a>
                            </li>
                            <li>
                                <a href="javascript:void(0)">update job</a>
                            </li>

                        </ul>
                        <!-- /.nav-second-level -->
                    </li>

Json文件

{
    "userid": "abc",
    "roles": ["admin"],
    "sidebar":  
    {           
                "job": ["addjob", "updatejob", "deletejob"]
            ,

                "user": ["adduaser", "deleteuser", "updateuser"]


    }   

控制器

 @RequestMapping(value = "/authenticateLogin", method = RequestMethod.POST)
            public   String loginAuthentication(HttpServletRequest request) {       
    String username=request.getParameter("userName");       
    JSONParser parser = new JSONParser();
    try {
        Object obj = parser.parse(new FileReader("d:\\test.json"));
        JSONObject jsonObject = (JSONObject) obj;

        String userID1 = (String) jsonObject.get("userid");
        if (username.equals(userID1)) {
            JSONArray rolesArray = (JSONArray) jsonObject.get("roles");
            String role = (String) rolesArray.get(0);
            if (role.equals("admin")) {

                JSONObject sideContent = (JSONObject) jsonObject.get("sidebar");
                JSONArray job = (JSONArray) sideContent.get("job");
                JSONArray user = (JSONArray) sideContent.get("user");

                ArrayList<String> jobArrayList = new ArrayList<String>();
                ArrayList<String> userArrayList = new ArrayList<String>();

                Iterator<String> iterator1 = job.iterator();
                while (iterator1.hasNext()) {                       
                    jobArrayList.add(iterator1.next());
                }
                Iterator<String> iterator2 = user.iterator();
                while (iterator2.hasNext()) {                       
                    userArrayList.add(iterator2.next());
                }                   
                return "";
            } 


            if(role.equals("user"))
            {
                JSONObject sideContent = (JSONObject) jsonObject.get("sidebar");
                JSONArray job = (JSONArray) sideContent.get("job");
                ArrayList<String> jobArrayList = new ArrayList<String>();
                Iterator<String> iterator1 = job.iterator();
                while (iterator1.hasNext()) {                       
                    jobArrayList.add(iterator1.next());
                }                   
                return "";
            }
        }           

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }


    return "Error";

}

推荐答案

我完成了一个带有标题,单击路径和图标的示例3级菜单.

I have done a sample 3 level menu with title,onclick path and icon.

Java方面

    public static ArrayList<Menu> getMenuTree(){
    ArrayList<Menu> menuTree = new ArrayList<Menu>();
    menuTree.add(new Menu("Menu 1", "#", "fa fa-tachometer", getSub()));
    menuTree.add(new Menu("Menu 2", "./onclickPath", "fa fa-cogs", new ArrayList<Menu>()));
    menuTree.add(new Menu("Menu 3", "./onclickPath", "fa fa-cogs", new ArrayList<Menu>()));
    return menuTree ;
}

public static ArrayList<Menu> getSub(){
    ArrayList<Menu> menu = new ArrayList<Menu>();
    menu.add(new Menu("Sub Menu 1", "#", "icofont-dashboard", getSub2()));
    menu.add(new Menu("Sub Menu 2", "./onclickPath", "fa fa-cogs", new ArrayList<Menu>()));
    menu.add(new Menu("Sub Menu 3", "./onclickPath", "fa fa-cogs", new ArrayList<Menu>()));
    return menu ;
}
public static ArrayList<Menu> getSub2(){
    ArrayList<Menu> menu = new ArrayList<Menu>();
    menu.add(new Menu("Sub Menu 1A", "./onclickPath", "fa fa-line-chart", new ArrayList<Menu>()));
    menu.add(new Menu("Sub Menu 1B", "./onclickPath", "fa fa-cogs", new ArrayList<Menu>()));
    menu.add(new Menu("Sub Menu 1C", "./onclickPath", "fa fa-cogs", new ArrayList<Menu>()));
    return menu ;
}

菜单Bean类

public class Menu {
private String title, url, icon;
private ArrayList<Menu> subMenu;

public Menu(String title, String url, String icon, ArrayList<Menu> subMenu) {
    this.title = title;
    this.url = url;
    this.icon = icon;
    this.subMenu = subMenu;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getUrl() {
    return url;
}

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

public String getIcon() {
    return icon;
}

public void setIcon(String icon) {
    this.icon = icon;
}

public ArrayList<Menu> issubMenu() {
    return subMenu;
}

public void setsubMenu(ArrayList<Menu> subMenu) {
    this.subMenu = subMenu;
}

public ArrayList<Menu> getSubMenu() {
    return subMenu;
}

public void setSubMenu(ArrayList<Menu> subMenu) {
    this.subMenu = subMenu;
}

public int getSize() {
    return subMenu.size();
}

}

JSP

<ul class="page-sidebar-menu">

            <c:forEach var="menu" items="${AaaTestController.getMenuTree()}">

                <li><a href="${menu.getUrl()}"> <i style="margin-right:5px;" class="${menu.getIcon()}"></i>
                        <c:choose><c:when test="${menu.getSize()>0}">
                        ${menu.getTitle()} <i style="float:right;" class="fa fa-angle-down"></i></a> 
                            <ul class="sub-menu">
                                <c:forEach var="subMenu" items="${menu.getSubMenu()}">
                                    <li><a href="${subMenu.getUrl()}"> <i  style="margin-right:2px;"  class="${subMenu.getIcon()}"></i>
                                        <c:choose><c:when test="${subMenu.getSize()>0}">
                                        ${subMenu.getTitle()} <i style="float:right; margin-right:23px;" class="fa fa-angle-down"></i></a> 
                                            <ul class="sub-menu">
                                                <c:forEach var="subMenu2" items="${subMenu.getSubMenu()}">
                                                    <li><a href="${subMenu2.getUrl()}"> <i  style="margin-right:3px;" class="${subMenu2.getIcon()}"></i>${subMenu2.getTitle()}</a></li>
                                                </c:forEach>
                                            </ul>
                                        </c:when>
                                        <c:otherwise>
                                      ${subMenu.getTitle()}</a> 
                                    </c:otherwise>
                                        </c:choose>
                                    </li>
                                </c:forEach>
                            </ul>
                        </c:when>
                        <c:otherwise>
                        ${menu.getTitle()}</a> 
                        </c:otherwise>
                        </c:choose>
                </li>

            </c:forEach>
 </ul>

这篇关于如何使用Spring MVC从JSON文件设计侧面菜单栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆