静态类中包含静态类,在html中无法引用,出现找不到类错误

package com.mall.com.utils.consts;

public class StaticMenu {
	/**
	 * 是否有子菜单
	 * @author JessenGan
	 */
	public static class HASSUB {
		public static String yes = "yes";
		public static String no = "no";
	}
	
	public static String yes = "yes";
}

在HTML中引用就会出错,出现找不到类。

TIM截图20181002151522.png

直接引用静态类中的yes变量就不会出错

TIM截图205.png


评论区

JFinal

2018-10-02 16:28

用一个 shared object 来实现:
engine.addSharedObject("HASSUB", new com.mall.com.utils.consts.StaticMenu. HASSUB();

然后用的时候这样:
#if (menu.hasMenuSub == HASSUB.yes)

这样用起来省去了前面那一串 package 名称,更加节省代码

jfinal enjoy 引入 static field 这个表达式,本质是为了在修改 java 代码中的常量值时,完全不需要改动 html 中的常量代码,而使用 shared object 来实现你这个需求与 enjoy 的设计目标是一致的,而且还多一个省代码的好处

就算是常规需求,如果常量值在 html 引用次数很多,我也建议结合 shared object 这种用法,用得地方多了,代码节省就很有价值了

JFinal

2018-10-02 16:29

此外,你的 html 中的代码有一些黄色波浪线,影响美观,看一下文档中建议的处理办法:
http://www.jfinal.com/doc/6-2
注意看最后一部分