我想实现类别的编辑操作,

我想实现类别的编辑操作,

我在编辑按钮那设置了带参传递

<c:forEach items="${categories}" var="category">
    <tr>
        <td>${category.name}</td>
        <td><fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${category.createTime}"/></td>
        <td><fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${category.updateTime}"/></td>
        <td>${category.description}</td>
        <td><a href="/category/updatePrompt.do?categoryId=${category.id}">编辑</a></td>
        <td><a href="/category/delete.do?categoryId=${category.id}">删除</a></td>
    </tr>
</c:forEach>

让她携带category的id值,传给/category/updatePromot.do

else if("/category/updatePrompt.do".equals(req.getServletPath())){
    //执行预编辑操作,跳转到编辑页面

        req.getRequestDispatcher("/WEB-INF/views/biz/update_category.jsp?categoryId="+categoryIdStr).forward(req,resp);
   
}

我在这个servlet中,进行了页面跳转,使其进入编辑页面,但是,我在进入到编辑页面之后已经找不到之前传递的category.id值,我想获得这个id值来撰写mapper中的update方法我应该怎么获取?

正在回答

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

3回答

1、同学可以在编辑按钮出把 id name  des等都传递到 updatePrompt.do 这里。

<td><a href="/category/updatePrompt.do?categoryId=${category.id}&name=${category.name}">编辑</a></td>

2、在 这个判断中获取之前传递过来的参数/category/updatePrompt.do ,并把它封装到Category中,放到域中,并转发到update_category.jsp 中

else if("/category/updatePrompt.do".equals(req.getServletPath())){
    //执行预编辑操作,跳转到编辑页面
String id1=req.getParameter("id");
            Long id =Long.valueOf(id1);
            String name=req.getParameter("name");
            String des=req.getParameter("des");
Category category = new Category();
            category.setId(id);
            category.setName(name);
            category.setDescription(des);
            req.setCharacterEncoding("UTF-8");
            req.setAttribute("category",category);
            req.getRequestDispatcher("/WEB-INF/views/biz/update_category.jsp").forward(req, resp);
    
}

 3、update_category.jsp 中,通过 

提交的时候,把id也隐藏的提交到 /category/update.do 中:${category.属性名} 就可以返显/category/updatePrompt.do中封装好的数据。提交的实际,把 id 也提交到/category/update.do 中,例如:

写在from表单里, type="hidden"

  <input type="hidden" name="id" class="form-control" id="id" value="${category.id}">


4、在/category/update.do 的判断中 再通过 

String id= req.getParameter("id");

获取到传递的id值


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


提问者 乐高战士 2018-09-26 11:22:22
else if("/category/updatePrompt.do".equals(req.getServletPath())){
    //执行预编辑操作,跳转到编辑页面
    //编辑功能未能实现
    String categoryIdStr = req.getParameter("categoryId");
    System.out.println(categoryIdStr);
    if(null != categoryIdStr && !"".equals(categoryIdStr)){
        req.getRequestDispatcher("/WEB-INF/views/biz/update_category.jsp?categoryId="+categoryIdStr).forward(req,resp);
    }
}else if ("/category/update.do".equals(req.getServletPath())){
    String categoryIdStr = req.getParameter("categoryId");
    System.out.println(categoryIdStr);
    Long categoryId;
    categoryId = Long.valueOf(categoryIdStr);
    System.out.println(categoryId);
    if(null != categoryIdStr && !"".equals(categoryIdStr)){

        String name = req.getParameter("name");
        String description = req.getParameter("description");
        categoryService.updateCategory(categoryId,name,description);
        //如果找到则编辑,并返回列表
    }
}

我想要在/category/update.do中获取参数,但是我这个方法使用过后,并不能传递参数到/category/update.do当中

好帮手慕阿莹 2018-09-25 18:10:22

同学的 categoryIdStr 是在哪里获取的呢? 建议在这里获取一下categoryIdStr试试,看看是否获取到了呢?

else if("/category/updatePrompt.do".equals(req.getServletPath())){
    //执行预编辑操作,跳转到编辑页面
//获取从页面传过来的categoryId 
 String categoryIdStr = req.getParameter("categoryId");
System.out.println(categoryIdStr );
        req.getRequestDispatcher("/WEB-INF/views/biz/update_category.jsp?categoryId="+categoryIdStr).forward(req,resp);
    
}

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

  • 提问者 乐高战士 #1
    我是在点击编辑那里,传递了一个参数给他 <c:forEach items="${categories}" var="category"> <tr> <td>${category.name}</td> <td><fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${category.createTime}"/></td> <td><fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${category.updateTime}"/></td> <td>${category.description}</td> <td><a href="/category/updatePrompt.do?categoryId=${category.id}">编辑</a></td> <td><a href="/category/delete.do?categoryId=${category.id}">删除</a></td> </tr> </c:forEach>
    2018-09-26 11:13:35
  • 提问者 乐高战士 #2
    我之前也用了你的方法,但是参数怎么在下个方法中获取?例如,Servlet匹配到了/category/updatePrompt.do,在里面进行了页面的跳转,进入到类别的编辑页面,然后,我想在类别的编辑页面中,也获取到之前传递的categoryId参数,我应该怎么做?
    2018-09-26 11:19:53
  • 提问者 乐高战士 #3
    我在回答中添加了代码,您看一下
    2018-09-26 11:21:02
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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