我去,完了,我下午为了贴一些代码,不小心把之前写的内容删了.......
我尽量回忆一下
我把昨天提的问题解决了:
%#{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