急急急问题很严重

急急急问题很严重

1.可正常进入list.do页面

http://img1.sycdn.imooc.com//climg/5edc75ba0950df1e13660768.jpg

2.当删除复古类时报错http://img1.sycdn.imooc.com//climg/5edc761309a1a15713660768.jpg

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.imooc.icake.global.GlobalController.service(GlobalController.java:56)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.imooc.icake.global.EncodingFilter.doFilter(EncodingFilter.java:22)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.ibatis.exceptions.PersistenceException: 

### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`icake`.`cake`, CONSTRAINT `FK_Reference_1` FOREIGN KEY (`cid`) REFERENCES `catalog` (`id`))

### The error may exist in com/imooc/icake/dao/CatalogDao.java (best guess)

### The error may involve com.imooc.icake.dao.CatalogDao.delete-Inline

### The error occurred while setting parameters

### SQL: delete from catalog where id=?

### Cause: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`icake`.`cake`, CONSTRAINT `FK_Reference_1` FOREIGN KEY (`cid`) REFERENCES `catalog` (`id`))

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)

at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)

at org.apache.ibatis.session.defaults.DefaultSqlSession.delete(DefaultSqlSession.java:212)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:72)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)

at com.sun.proxy.$Proxy14.delete(Unknown Source)

at com.imooc.icake.biz.impl.CatalogBizImpl.remove(CatalogBizImpl.java:21)

at com.imooc.icake.controller.CatalogController.remove(CatalogController.java:51)

... 30 more

Caused by: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`icake`.`cake`, CONSTRAINT `FK_Reference_1` FOREIGN KEY (`cid`) REFERENCES `catalog` (`id`))

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)

at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)

at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)

at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:391)

at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)

at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)

at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)

at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)

at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)

at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)

... 36 more

3.添加分类时

http://img1.sycdn.imooc.com//climg/5edc7690094bdae013660768.jpg

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.imooc.icake.global.GlobalController.service(GlobalController.java:56)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.imooc.icake.global.EncodingFilter.doFilter(EncodingFilter.java:22)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.jasper.JasperException: 在 [42] 行处理 [/WEB-INF/pages/admin/catalog_add.jsp] 时发生异常


39:                                                 <c:forEach items="${root.children}" var="cat1">

40:                                                     <option value="${cat1.id}">&nbsp;&nbsp;&nbsp;&nbsp;${cat1.title}</option>

41:                                                     <c:forEach items="cat1.children" var="cat2">

42:                                                         <option value="${cat2.id}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${cat2.title}</option>

43:                                                     </c:forEach>

44:                                                 </c:forEach>

45: 



Stacktrace:

at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)

at com.imooc.icake.controller.CatalogController.toAdd(CatalogController.java:28)

... 30 more

Caused by: javax.el.PropertyNotFoundException: 类型[java.lang.String]上找不到属性[id]

at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260)

at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)

at javax.el.BeanELResolver.property(BeanELResolver.java:333)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:92)

at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:113)

at org.apache.el.parser.AstValue.getValue(AstValue.java:169)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)

at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)

at org.apache.jsp.WEB_002dINF.pages.admin.catalog_005fadd_jsp._jspx_meth_c_005fforEach_005f1(catalog_005fadd_jsp.java:311)

at org.apache.jsp.WEB_002dINF.pages.admin.catalog_005fadd_jsp._jspx_meth_c_005fforEach_005f0(catalog_005fadd_jsp.java:263)

at org.apache.jsp.WEB_002dINF.pages.admin.catalog_005fadd_jsp._jspService(catalog_005fadd_jsp.java:164)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)

... 43 more

package com.imooc.icake.global;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class GlobalController extends GenericServlet {

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        /*
        .do
        /login.do               DefaultController       login
        /Cake/detail.do         CakeController          detail
        /admin/Cake/add.do      CakeController          add
        */
        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse)res;
        String path = request.getServletPath();
        //判断后台操作还是前端操作
        if(path.indexOf("/admin")!=-1){
            //后台
            path = path.substring(7);
        }else {
            path = path.substring(1);
        }

        /*
        login.do               DefaultController       login
        Cake/detail.do         CakeController          detail
        Cake/add.do      CakeController          add
        */
        //判断是否模块
        int index = path.indexOf("/");
        String className = null;
        String methodName = null;
        if (index!=-1){
            //带有模块
            className = "com.imooc.icake.controller."+path.substring(0,index)+"Controller";
            methodName = path.substring(index+1,path.indexOf(".do"));
        }else{
            className = "com.imooc.icake.controller.DefaultController";
            methodName = path.substring(0,path.indexOf(".do"));
        }

        try {
            //反射调用方法
            Class cla = Class.forName(className);
            Object object = cla.newInstance();
            Method method =  cla.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
            method.invoke(object,request,response);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

    }
}
package com.imooc.icake.global;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

public class DaoFactory {
    private static DaoFactory daoFactory;
    private SqlSessionFactory sessionFactory;
    private DaoFactory() {
        try {
            SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
            sessionFactory = sessionFactoryBuilder.build(Resources.getResourceAsReader("/mybatis.xml"));
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    
    public static DaoFactory getInstance() {
        try{
            if (daoFactory==null)
                daoFactory = new DaoFactory();

        }catch (Exception e){
            e.printStackTrace();
        }
        return daoFactory;
    }

    public <T>T getDao(Class<T> tClass){
        return sessionFactory.openSession(true).getMapper(tClass);
    }
}
package com.imooc.icake.dao;

import com.imooc.icake.entity.Catalog;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface CatalogDao {
    @Insert("<script>"+
            "insert into catalog(title,pid,info) values"+
            "<foreach collection='list' item='catalog' separator=','>"+
            "(#{catalog.title},#{catalog.pid},#{catalog.info})"+
            "</foreach>"+
            "</script>")
    @Options(useGeneratedKeys = true,keyProperty = "id")
    void batchInsert(List<Catalog> list);

    @Delete("delete from catalog where id=#{id}")
    void delete(int id);

    @Select("select * from catalog where id=#{id}")
    @Results(id = "all",value = {
            @Result(column = "id",property = "id",id = true),
            @Result(column = "title",property = "title"),
            @Result(column = "pid",property = "pid"),
            @Result(column = "info",property = "info"),
            @Result(column = "id",property = "children",many=@Many(select = "selectByPid"))
    })
    Catalog select(int id);

    @Select("select * from catalog where pid=#{pid}")
    @ResultMap("all")
    List<Catalog> selectByPid(int pid);
}
package com.imooc.icake.biz.impl;

import com.imooc.icake.biz.CatalogBiz;
import com.imooc.icake.dao.CatalogDao;
import com.imooc.icake.entity.Catalog;
import com.imooc.icake.global.DaoFactory;

import java.io.IOException;
import java.util.List;

public class CatalogBizImpl implements CatalogBiz {

    private CatalogDao catalogDao = DaoFactory.getInstance().
                                    getDao(CatalogDao.class);

    public void add(List<Catalog> list) {
        catalogDao.batchInsert(list);
    }

    public void remove(int id) {
        catalogDao.delete(id);
    }

    public Catalog getRoot() {
        return catalogDao.select(10000);
    }
}
package com.imooc.icake.controller;

import com.imooc.icake.biz.CatalogBiz;
import com.imooc.icake.biz.impl.CatalogBizImpl;
import com.imooc.icake.entity.Catalog;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CatalogController {
    private CatalogBiz catalogBiz = new CatalogBizImpl();

    //      /admin/Catalog/list.do
    public void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Catalog root = catalogBiz.getRoot();
        request.setAttribute("root",root);
        request.getRequestDispatcher("/WEB-INF/pages/admin/catalog_list.jsp").forward(request,response);
    }

    //      /admin/Catalog/toAdd.do
    public void toAdd(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Catalog root = catalogBiz.getRoot();
        request.setAttribute("root",root);
        request.getRequestDispatcher("/WEB-INF/pages/admin/catalog_add.jsp").forward(request,response);
    }

    //      /admin/Catalog/add.do
    public void add(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String[] titles = request.getParameterValues("title");
        String[] pids = request.getParameterValues("pid");
        String[] infos = request.getParameterValues("info");
        List<Catalog> list = new ArrayList<Catalog>();
        for (int i=0;i<titles.length;i++){
            Catalog catalog = new Catalog();
            catalog.setTitle(titles[i]);
            catalog.setPid(Integer.parseInt(titles[i]));
            catalog.setInfo(infos[i]);
            list.add(catalog);
        }
        catalogBiz.add(list);
        response.sendRedirect("list.do");
    }

    //      /admin/Catalog/remove.do
    public void remove(HttpServletRequest request, HttpServletResponse response) throws IOException {
        int id = Integer.parseInt(request.getParameter("id"));
        catalogBiz.remove(id);
        response.sendRedirect("list.do");
    }


}
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

    <jsp:include page="top.jsp"/>

    <section id="content_wrapper">
        <section id="content" class="table-layout animated fadeIn">
            <div class="tray tray-center">
                <div class="content-header">
                    <h2> 分类管理</h2>
                    <p class="lead"></p>
                </div>
                <div class="admin-form theme-primary mw1000 center-block" style="padding-bottom: 175px;">
                    <div class="panel  heading-border">
                        <div class="panel-menu">
                            <div class="row">
                                <div class="hidden-xs hidden-sm col-md-3">
                                    <div class="btn-group">
                                        <button type="button" class="btn btn-default light">
                                            <i class="fa fa-trash"></i>
                                        </button>
                                        <button type="button" class="btn btn-default light">
                                            <i class="fa fa-plus" onclick="javascript:window.location.href='/admin/Catalog/toAdd.do';"></i>
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="panel-body pn">
                            <table id="message-table" class="table admin-form theme-warning tc-checkbox-1">
                                <thead>
                                <tr class="">
                                    <th class="text-center hidden-xs">Select</th>
                                    <th class="hidden-xs">名称</th>
                                    <th class="hidden-xs">描述</th>
                                    <th>操作</th>
                                </tr>
                                </thead>
                                <tbody>
                                    <c:forEach items="${root.children}" var="cat1">
                                        <tr class="message-unread">
                                            <td class="hidden-xs">
                                                <label class="option block mn">
                                                    <input type="checkbox" name="mobileos" value="FR">
                                                    <span class="checkbox mn"></span>
                                                </label>
                                            </td>
                                            <td>${cat1.title}</td>
                                            <td>${cat1.info}</td>
                                            <td>
                                                <a href="/admin/Catalog/remove.do?id=${cat1.id}">删除</a>
                                            </td>
                                        </tr>
                                        <c:forEach items="${cat1.children}" var="cat2">
                                            <tr class="message-unread">
                                                    <td class="hidden-xs">
                                                        <label class="option block mn">
                                                            <input type="checkbox" name="mobileos" value="FR">
                                                            <span class="checkbox mn"></span>
                                                        </label>
                                                    </td>
                                                    <td style="padding-left: 50px;">${cat2.title}</td>
                                                    <td>${cat2.info}</td>
                                                    <td>
                                                        <a href="/admin/Catalog/remove.do?id=${cat2.id}">删除</a>
                                                    </td>
                                            </tr>
                                            <c:forEach items="${cat2.children}" var="cat3">
                                                <tr class="message-unread">
                                                    <td class="hidden-xs">
                                                        <label class="option block mn">
                                                            <input type="checkbox" name="mobileos" value="FR">
                                                            <span class="checkbox mn"></span>
                                                        </label>
                                                    </td>
                                                    <td style="padding-left: 100px;">${cat3.title}</td>
                                                    <td>${cat3.info}</td>
                                                    <td>
                                                        <a href="/admin/Catalog/remove.do?id=${cat3.id}">删除</a>
                                                    </td>
                                                </tr>
                                            </c:forEach>
                                        </c:forEach>
                                    </c:forEach>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </section>
    </section>

    <jsp:include page="bottom.jsp"/>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<jsp:include page="top.jsp"/>

<section id="content_wrapper">
    <section id="content" class="table-layout animated fadeIn">
        <div class="tray tray-center">
            <div class="content-header">
                <h2> 添加分类</h2>
                <p class="lead"></p>
            </div>
            <div class="admin-form theme-primary mw1000 center-block" style="padding-bottom: 175px;">
                <div class="panel heading-border">
                    <form method="post" action="/admin/Catalog/add.do" id="admin-form">
                        <div class="panel-body bg-light">
                            <div class="section row">
                                <div>
                                    <div class="col-md-3"><b>分类编号</b></div>
                                    <div class="col-md-5"><b>分类名称</b></div>
                                    <div class="col-md-3"><b>所属父类</b></div>
                                    <div class="col-md-1" style="text-align:right;"><b>删除</b></div>
                                </div>
                            </div>
                            <div class="section row" id="batch_items">
                                <div>
                                    <div class="col-md-3">
                                        <label for="title" class="field prepend-icon">
                                            <input type="text" name="title" id="title" class="gui-input money" placeholder="名称..." required>
                                            <label for="title" class="field-icon">
                                                <i class="fa fa-stack"></i>
                                            </label>
                                        </label>
                                    </div>
                                    <div class="col-md-3">
                                        <label class="field select">
                                            <select id="language" name="pid">
                                                <option value="${root.id}">${root.title}</option>
                                                <c:forEach items="${root.children}" var="cat1">
                                                    <option value="${cat1.id}">&nbsp;&nbsp;&nbsp;&nbsp;${cat1.title}</option>
                                                    <c:forEach items="cat1.children" var="cat2">
                                                        <option value="${cat2.id}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${cat2.title}</option>
                                                    </c:forEach>
                                                </c:forEach>
                                            </select>
                                            <i class="arrow double"></i>
                                        </label>
                                    </div>
                                    <div class="col-md-5">
                                        <label for="info" class="field prepend-icon">
                                            <input type="text" name="info" id="info" class="gui-input" placeholder="描述...">
                                            <label for="info" class="field-icon">
                                                <i class="fa fa-info"></i>
                                            </label>
                                        </label>
                                    </div>
                                    <div class="col-md-1" style="text-align:right;">
                                        <button type="button" class="button remove_item_button"> X </button>
                                    </div>
                                </div>
                            </div>
                            <div class="panel-footer text-right">
                                <button type="button" class="button" id="add_item_button"> 添加 </button>
                                <button type="submit" class="button"> 保存 </button>
                                <button type="button" class="button" onclick="javascript:window.location.href='/admin/Catalog/list.do';"> 返回 </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
</section>


<jsp:include page="bottom.jsp"/>

<script>
    $("#add_item_button").click(function(){
        $("#batch_items").children("div").last().after($("#batch_items").children("div").first().clone());
        $("#batch_items").find("button.remove_item_button").attr("disabled",false);
        $("#batch_items").children("div").last().find("input").eq(0).attr("value","");
        $("#batch_items").children("div").last().find("button.remove_item_button").click(
            function(){itemRemove(this);}
        );
    });
    function itemRemove(ele){
        $(ele).parent().parent().remove();
        if($("#batch_items").children("div").size()==1){
            $("#batch_items").children("div").find("button.remove_item_button").attr("disabled",true);
        }
    }
</script>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>欢迎使用 IMOOC Cake 后台管理系统</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="/css/theme.css">
    <link rel="stylesheet" type="text/css" href="/css/admin-forms.css">
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
    <![endif]-->
</head>

<body class="admin-validation-page" data-spy="scroll" data-target="#nav-spy" data-offset="200">
<div id="main">
    <header class="navbar navbar-fixed-top navbar-shadow">
        <div class="navbar-branding">
            <a class="navbar-brand" href="../index.html">
                <H3>IMOOC Cake 后台管理系统</H3>
            </a>
            <span id="toggle_sidemenu_l" class="ad ad-lines"></span>
        </div>
    </header>
    <aside id="sidebar_left" class="nano nano-light affix">
        <div class="sidebar-left-content nano-content">
            <header class="sidebar-header">
                <div class="sidebar-widget author-widget">
                    <div class="media">
                        <a class="media-left" href="#">
                            <img src="/images/head.jpg" class="img-responsive">
                        </a>
                        <div class="media-body">
                            <div class="media-author">管理员</div>
                            <div class="media-links">
                                <a href="login.html">退出</a>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="sidebar-widget search-widget hidden">
                    <div class="input-group">
                        <span class="input-group-addon">
                        <i class="fa fa-search"></i>
                        </span>
                        <input type="text" id="sidebar-search" class="form-control" placeholder="Search...">
                    </div>
                </div>
            </header>
            <ul class="nav sidebar-menu">
                <li class="sidebar-label pt20">商品管理</li>
                <li class="active">
                    <a href="cake_list.html">
                        <span class="glyphicon glyphicon-book"></span>
                        <span class="sidebar-title">商品列表</span>
                    </a>
                </li>
                <li>
                    <a href="cake_add.html">
                        <span class="glyphicon glyphicon-home"></span>
                        <span class="sidebar-title">商品上架</span>
                    </a>
                </li>
                <li class="sidebar-label pt20">分类管理</li>
                <li class="active">
                    <a href="/admin/Catalog/list.do">
                        <span class="glyphicon glyphicon-book"></span>
                        <span class="sidebar-title">分类列表</span>
                    </a>
                </li>
                <li>
                    <a href="/admin/Catalog/toAdd.do">
                        <span class="glyphicon glyphicon-home"></span>
                        <span class="sidebar-title">添加分类</span>
                    </a>
                </li>
            </ul>
            <div class="sidebar-toggle-mini">
                <a href="login.html">
                    <span class="fa fa-sign-out"></span>
                </a>
            </div>
        </div>
    </aside>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

</div>
<style>
    /* demo page styles */
    body { min-height: 2300px; }

    .content-header b,
    .admin-form .panel.heading-border:before,
    .admin-form .panel .heading-border:before {
        transition: all 0.7s ease;
    }
    /* responsive demo styles */
    @media (max-width: 800px) {
        .admin-form .panel-body { padding: 18px 12px; }
    }
</style>

<style>
    .ui-datepicker select.ui-datepicker-month,
    .ui-datepicker select.ui-datepicker-year {
        width: 48%;
        margin-top: 0;
        margin-bottom: 0;

        line-height: 25px;
        text-indent: 3px;

        color: #888;
        border-color: #DDD;
        background-color: #FDFDFD;

        -webkit-appearance: none; /*Optionally disable dropdown arrow*/
    }
</style>

<!-- jQuery -->
<script src="/js/jquery.min.js"></script>
<script src="/js/jquery-ui.min.js"></script>
<!-- Theme Javascript -->
<script src="/js/utility.js"></script>
<script src="/js/demo/demo.js"></script>
<script src="/js/main.js"></script>
<script src="/js/pages.js"></script>
<!-- END: PAGE SCRIPTS -->
</body>


</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕阿满 2020-06-07 16:53:38

同学你好,图一是分类的截图,这里是建议将复古分类下的蛋糕删掉,例如:

如下深艾尔,爱尔兰咖啡等都是复古分类下的具体蛋糕,如:

http://img1.sycdn.imooc.com//climg/5edcaabd097e263810420498.jpg

建议同学将这些蛋糕都删掉后,再删除复古这个分类。

祝:学习愉快~

提问者 廖伟锋 2020-06-07 15:32:52
好帮手慕阿满 2020-06-07 15:02:32

同学你好,关于同学的问题:

1、删除分类时,报外键错误,如:

http://img1.sycdn.imooc.com//climg/5edc8ff809e5601c08510197.jpg

应该是复古类下有具体的蛋糕,所以不能删除该分类。建议同学将该分类下的蛋糕删除后,再去删除分类。

2、添加分类时,如下的items应该使用el表达式${cat1.children}获取,如:

http://img1.sycdn.imooc.com//climg/5edc908e0980673b09410531.jpg

建议同学修改一下再试试。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 廖伟锋 #1
    图一哪来的蛋糕呢
    2020-06-07 15:28:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师