点了添加按钮,跳转到表单页面,左边的子菜单选中状态消失了。
menu页面中的html如下:
添加按钮的html如下:
<div class="jfa-toolbar"> <a class="btn btn-primary btn-sm" id="btnAdd" href="/admin/article/add?menucode=#(menu)" > <i class="fa fa-plus"></i> 添加文章 </a> </div>
控制器代码如下:
public class ArticleAdminController extends BaseController { @Inject ArticleAdminService srv; @Inject ArticleSubmenuAdminService submenuSrv; public void index(){ keepPara("menu"); String menuCode = getPara("menu","toutiao"); int pageIndex = getParaToInt("p", 1); Page<Article> artPage = srv.paginate(menuCode,pageIndex); setAttr("artPage", artPage); render("index.html"); } /** * 创建 */ public void add() { keepPara("menucode"); String menuCode = getPara("menucode"); setAttr("submenus", submenuSrv.findByMenuCode(menuCode)); render("add_edit.html"); } /** * 提交创建 */ public void save() { keepPara("menucode"); Article art = getBean(Article.class,"article"); Ret ret = srv.save(art); renderJson(ret); } /** * 修改 */ public void edit() { keepPara("menucode"); keepPara("p");// 保持住分页的页号,便于在 ajax 提交后跳转到当前数据所在的页 setAttr("article", srv.edit(getParaToInt("id"))); setAttr("submenus", submenuSrv.findByMenuCode(getPara("menucode"))); render("add_edit.html"); } /** * 提交修改 */ public void update() { keepPara("menucode"); Article art = getBean(Article.class,"article"); Ret ret = srv.update(art); renderJson(ret); } /** * 锁定 */ public void lock() { Ret ret = srv.lock(getParaToInt("id")); renderJson(ret); } /** * 解除锁定 */ public void unlock() { Ret ret = srv.unlock(getParaToInt("id")); renderJson(ret); } /** * 删除 */ public void delete() { Ret ret = srv.delete(getParaToInt("id")); renderJson(ret); } }
-----------------------------------------------------------
经过单步调试,找到问题原因:
点击【添加按钮】并加载表单后,jfinal-admin.js在进行反向匹配菜单时,是根据按钮action的pathName进行的,如果pathName和菜单href匹配不上,则无法选中。
// 设置当前选中菜单样式
$(".jfa-sub-menu a").removeClass("jfa-cur-menu");
$(".jfa-main-menu[home='true']").removeClass("jfa-cur-menu");
$this.addClass("jfa-cur-menu");
按一下 F12 打开浏览器的开发者工具,然后按 esc 键将浏览器控制台打开,再点击菜单,看控制台有没有 js 脚本错误,如果有错误解决一下即可
在点击子菜单的同时看一下开发者工具的 dom 文档中的当前被选中的菜单上的 class= 是不是被赋上值了:
class = "jfa-cur-menu"
要确保被赋上值,如果赋上值还是没效果,那就是 css 的问题,只要确保 copy 已存在的纯正的菜单过去改改就好
总之就两类问题:
1:js 错误(包括 js 文件找不到)
2:css 错误,包括 css 未正确操控,或者正确操控但没不是想要的效果