这是一个带有Hibernate的Spring MVC项目.我正在尝试创建一个Logger类,负责将日志输入数据库.其他类只调用具有一些属性的正确方法,这个类应该做所有的魔术.本质上它应该是一个具有静态方法的类,但这会导致autoiering dao对象出现问题.
public class StatisticLogger {
@Autowired
static Dao dao;
public static void AddLoginEvent(LogStatisticBean user){
//TODO code it god damn it
}
public static void AddDocumentEvent(LogStatisticBean user, Document document, DocumentActionFlags actionPerformed){
//TODO code it god damn it
}
public static void addErrorLog(Exception e, String page, HashMap<String, Object> parameters){
ExceptionLogBean elb=new ExceptionLogBean();
elb.setStuntDescription(e);
elb.setSourcePage(page);
elb.setParameters(parameters);
if(dao!=null){ //BUT DAO IS NULL
dao.saveOrUpdateEntity(elb);
}
}
Run Code Online (Sandbox Code Playgroud)
怎么做对了?我该怎么做才能使dao对象为null?我知道我可以将它作为方法参数传递,但这不是很好.我猜测autowired无法在静态对象上工作,因为它们是为早期创建的,所以尚未创建自动维护机制.
我的问题是,我的应用程序在Tomcat服务器上本地运行良好,但在安装了glassfish的服务器上抛出错误.整个问题是我在JSTL中迭代查看HashMap.服务器抛出如下堆栈:
Servlet.service() for servlet jsp threw exception java.lang.IllegalAccessException:
Class javax.el.BeanELResolver can not access a member of class java.util.HashMap$Entry with modifiers "public final"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253)
Run Code Online (Sandbox Code Playgroud)
问题是由代码引起的:
<c:forEach items="${element.getPreparedParameters()}" var="parametr" varStatus="j">
documents["${i.index}"]["param"]=new Array();
documents["${i.index}"]["param"]["key"] = "${parametr.getKey()}";
documents["${i.index}"]["param"]["value"] = "${parametr.getValue()}";
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
哪里有element.getPreparedParameters()回报HashMap.
我怎样才能使它工作?
我正在尝试使用jQuery设置函数onFocusOut事件,如:
$(':number').keypress(function (evt){
//validating cone
}
Run Code Online (Sandbox Code Playgroud)
但它无法选择抛出错误的数字类型
错误:语法错误,无法识别的表达式:数字
类型文本的相同代码工作正常.
jQuery不知道数字数据类型吗?如何使它工作?