在实习单位借Spring框架学做增删改查第九天

        我去,完了,我下午为了贴一些代码,不小心把之前写的内容删了.......

        我尽量回忆一下

        我把昨天提的问题解决了:

        %#{tuid}% 的用法是错误的
        %号是作为数据来被编译的,而#号只给"tuid"两侧加上了单引号
        所以说这种写法实际上是输入了一个%'tuid'%的数字类型与字符串类型混合的数据,编译器当然不认识
        正确的写法是'%'#{tuid}'%'
        '%${tuid}%'和它表达的意义是一样的
        鉴于myeclipse总是给我在xml文件上出问题的特点,我就改成了'%${tuid}%'的写法

        我不断的测试用例,研究控制台报出的信息,我发现页面的跳转是由Controller层控制的.

         删掉之前我其实写了蛮多的,但现在回忆起来就基本只剩下结果了,这里往下就是我正常边写边记的东西了

        fyTestUser.java片段(与讲解无关的我省略了):

//查询整个数据表,分页,每页30行数据,展示
	@RequiresPermissions("fyTest:fyTestUser:view")  
	@RequestMapping(value={"/fyTestUsers/list"})	
	public String fyTestUserList(FyTestUser fyTestUser,HttpServletRequest request,HttpServletResponse response,Model model){
		省略			
		return"modules/fyTest/fyTest";	
	}

	
	//填写"新增信息"的页面
	@RequiresPermissions("fyTest:fyTestUser:edit")
	@RequestMapping(value={"/fyTestUsers/form"})
	public String fyTestUsersForm(FyTestUser fyTestUser, HttpServletRequest request, HttpServletResponse response, Model model){
		return "modules/fyTest/fyTestForm";
	}
	
	
	//功能,新增信息
	@RequiresPermissions("fyTest:fyTestUser:edit")
	@RequestMapping(value={"/fyTestUsers/save"})
	public String fyTestUsersSave(FyTestUser fyTestUser, Model model,RedirectAttributes redirectAttributes){		
		省略
		return "redirect:" + adminPath + "/fyTest/fyTestUsers/list";
	}
	
	
	//导出表单数据
	@RequiresPermissions("fyTest:fyTestUser:view")
	@RequestMapping(value = "/fyTestUsers/export",method=RequestMethod.POST)
	public String exportfile(FyTestUser fyTestUser,HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes){
		省略
		return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
	}
	
	
	//修改状态
	@RequiresPermissions("fyTest:fyTestUser:edit")
	@RequestMapping(value = "/fyTestUsers/updateStatus")
	public String fyTestUserUpdateStatus(FyTestUser fyTestUser, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes){
		省略
		return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
		
	}

	
	//修改整体
	@RequiresPermissions("fyTest:fyTestUser:edit")
	@RequestMapping(value = "/fyTestUsers/updateAll")
	public String fyTestUserUpdateAll(FyTestUser fyTestUser, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes){
		省略
		return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
		
	}
	
	
	//删除数据
		@RequiresPermissions("fyTest:fyTestUser:edit")
		@RequestMapping(value = "/fyTestUsers/delete")
		public String fyTestUserRemove(FyTestUser fyTestUser, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes){
			省略
			return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
			
		}

        再说一下@RequiresPermissions,作用是说明使用该功能需要的权限码(如:"fyTest:fyTestUser:edit"),而用户的权限配置是在用户界面直接填写设置,至于怎么去配置上的我们不用理解,知道就这么配置上了就行

         然后是@RequestMapping,这个注释就是标明使用这个功能所在的"地方"就是这个url地址(如"/fyTestUsers/delete")

        return,它的作用就是告诉你执行完这个功能之后下一步会去的地址,像是 return"modules/fyTest/fyTest"; 就代表执行完了这个功能会前往fyTest也就是第一个界面,也就是"fyTest.jsp"对应的界面.而之前我们留有疑问的写法(如return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";),其实也是同样的作用,只不过在这个功能运行完后的下一步跳转的不是一个页面,而是一个功能.

        我直接画了个图,就对应上面的代码,你们可以比对一下.

         现在,对Controller层的了解更进一步了(ノ´▽`)ノ♪

        研究是研究明白了,现在看看怎么让增添完数据后页面跳回首页

        "改状态"功能是正常跳转的,我把这两个功能的控制台信息对比了一下

        为啥是afyTest?

        因为被识别成了不存在的"afyTest",所以没有跳转到正确的界面上去

        好离谱的错误........

        发生这个情况的原因应该就是对应位置我少写符号了
        但是对比了一下发现这两个功能我写的return一模一样啊?!

        会不会又是编译器的问题?

        我特意给"改状态"里加了一个同款afyTest拼写错误,重装了下项目,结果是--"改状态"功能正常使用,而且昨天查找功能的毛病"无效的列索引"又来了,一看xml文件,又变回了之前错误的写法

        娘的,又来了.

        总

        之

        就

        是

        一

        顿

        折

        腾

        要被感动哭了,问题确实是这么个问题,老大们帮我一顿排查折腾,终于!终于!终于!一切都正常了!可以继续往下推进了!

        按我的理解,出现"afyTest"的问题就是编译器一直在编译一个旧的我的代码,而这个旧的代码刚好这里出问题了,所以会有跳转不回主页的问题.现在解决了!

        好,整理下思路.增删改查,增搞定了,查搞定了,现在搞删除

        删除的按钮我想设计在"改状态"旁边
        fyTest.jsp:

<tbody>
			<c:forEach items="${page.list}" var="fyTestUser"  varStatus="status">
				<!-- 从entity取数据 -->
				<tr>
					<td>${status.index + 1}</td> 
					<td>${fyTestUser.tuid}</td>
					<td>${fyTestUser.name}</td>
					<td>${fyTestUser.sex}</td>
					<td>${fyTestUser.departments}</td>
					<td>${fyTestUser.status}</td>
					<td>${fyTestUser.telephone}</td>
					<td><fmt:formatDate value="${fyTestUser.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
					<td><fmt:formatDate value="${fyTestUser.amendTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
					<td>
						<shiro:hasPermission name="fyTest:fyTestUser:edit">
							<a href="${ctx}/fyTest/fyTestUsers/updateStatus?tuid=${fyTestUser.tuid}"
							onclick="return confirmx('确认更改 <b>${fyTestUser.name}[${fyTestUser.tuid}]</b>的状态吗?', this.href)">改状态 </a>
						</shiro:hasPermission>
						<!-- 删除按钮,直接复制上面的"改状态" -->
						<shiro:hasPermission name="fyTest:fyTestUser:edit">
							<a href="${ctx}/fyTest/fyTestUsers/delete?tuid=${fyTestUser.tuid}"
							onclick="return confirmx('确认删除 <b>${fyTestUser.name}[${fyTestUser.tuid}]</b>的信息吗?(此次删除数据无法复原)', this.href)">删除 </a>
						</shiro:hasPermission>
					</td>
				</tr>
			</c:forEach>
		</tbody>

        丝滑,运行了一下删除成功(再次感谢老大救命之恩)

        现在剩下了改,"改状态"我只是简单写了下,还有些想法没实现,"整体修改"还没写
        先添加下"整体修改"的按钮(跟"删除"一样,我就不贴代码了)

        丝滑,添加成功

        下班,明天接着干

        整理与思考:

        编译器问题一解决,效率立马提高了好多
        明天第十天,还好剩下的东西也不多了
        我想给"整体修改"新建个页面,跟"添加数据"差不多的排版,看看能不能把状态那栏调成能下拉的选择框
        "改状态"也得改一下,我想让它能直接在主界面上修改,而且不能只让它把数改为3.

——20230322

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值