Java Wicket:定义应用程序范围的变量
我想对用户正在做的事情做一点“记录”。我有不同的面板,所有这些面板都有Ajax功能,比如“onclick”、“onevent”和“onchange”。我计划定义一个应用程序范围的字符串数组列表来记录所有事情。Java Wicket:定义应用程序范围的变量,java,session,wicket,Java,Session,Wicket,我想对用户正在做的事情做一点“记录”。我有不同的面板,所有这些面板都有Ajax功能,比如“onclick”、“onevent”和“onchange”。我计划定义一个应用程序范围的字符串数组列表来记录所有事情。 我在WicketApplication.java中写了以下内容 public class WicketApplication extends WebApplication { private List<String> log = new ArrayList<String
我在WicketApplication.java中写了以下内容
public class WicketApplication extends WebApplication {
private List<String> log = new ArrayList<String>();
@Override
public Class<? extends WebPage> getHomePage() {
//code
}
@Override
public void init() {
//code
}
public List<String> getLog() {
return log;
}
public void setLog(List<String> log) {
this.log = log;
}}
公共类WicketApplication扩展了WebApplication{
私有列表日志=新的ArrayList();
@凌驾
公共类通常的使用方式是(静态)方法。这是典型的,不要害怕
MyApllication m = MyApllication.get();
因此,在每个wicket对象中,genrally都很容易。
通常“静态重写”以返回正确的类型(并且可以提供额外的控制)
或
当这个静态方法返回正确的类型时,问题就解决了
分析构建AuthenticatedWebApplication
overWebApplication
(或WebApplication
overApplication
)是如何由Wicket团队验证的,并且似乎是规范的
顺便说一句,您将拥有idea访问/执行取决于用户/会话的操作。类似的想法存在:WebSession
在MySession
中覆盖。正常的使用方式是(静态)方法。这是典型的,不要害怕
MyApllication m = MyApllication.get();
因此,在每个wicket对象中,genrally都很容易。
通常“静态重写”以返回正确的类型(并且可以提供额外的控制)
或
当这个静态方法返回正确的类型时,问题就解决了
分析构建AuthenticatedWebApplication
overWebApplication
(或WebApplication
overApplication
)是如何由Wicket团队验证的,并且似乎是规范的
顺便说一句,您将拥有idea访问权限/根据用户/会话执行操作类似的想法存在:WebSession
override inMySession
我认为您做错了(在多个级别上)
首先:如果你想记录,使用一个记录框架。例如,最好通过
第二:如果你不想使用日志框架,创建一个日志服务(一个专用对象,而不是Wicket应用程序),使用依赖注入将日志服务注入到你需要的所有组件中
第三:按照公认的答案,静态访问WebApplication
听起来是一个非常糟糕的主意(但公平地说,这显然是Wicket提出的)。我认为你做错了(在多个层面上)
首先:如果你想记录,使用一个记录框架。例如,最好通过
第二:如果你不想使用日志框架,创建一个日志服务(一个专用对象,而不是Wicket应用程序),使用依赖注入将日志服务注入到你需要的所有组件中
第三:按照公认的答案,静态访问WebApplication
听起来是一个非常糟糕的主意(但公平地说,这显然是Wicket提出的).谢谢,WebSession是解决方案。这很有帮助。谢谢,WebSession是解决方案。这很有帮助。谢谢你的投入。我知道这不是最终的解决方案。我打算先做一些简单的工作,看看它是如何工作的。我将切换到Log4JI。由于Log4J的导入错误,我选择了SLF4J,不知道为什么,但SLF4J也一样好。谢谢。1.第一次接触Wicket+注入有一点必须理解(这是我的问题-你写得很好):注入在组件中工作,我想知道为什么(不那么容易)在模型2中。静态方法实现(在框架中)是基于当前线程上下文的,可能没那么糟糕?它不是“学校”静态访问。但我不是那么黑客,渴望听到something@JacekCz不,我同意。框架设计师已经明确推荐了静态访问,所以我想这是应该的。但我仍然认为它非常丑陋:-)是的,这种访问在Wicket中似乎是惯用的。这可能是因为Wicket为用户创建了一个受控的环境无论如何都要访问这些类。(包括对单元测试的内置支持。)就我个人而言,由于并发性问题,我喜欢将其使用限制为不可变配置(Wicket在很多方面保证单线程,但显然不适用于应用范围。)感谢您的输入。我知道这不是最终的解决方案。我打算先做一些简单的工作,看看它是如何工作的。我将切换到Log4JI。由于Log4J的导入错误,我选择了SLF4J,不知道为什么,但SLF4J工作得同样好。谢谢。1.首先联系Wicket+注入具有精确的点必须理解(这是我的问题-你写的还可以):注入在组件中工作,我想知道为什么(不那么容易)在模型2中。静态方法实现(在框架中)是基于当前线程上下文的,也许不是那么糟糕?它不是“学校”静态访问。但我不是那么黑客,渴望听到something@JacekCz不,我同意。框架设计师已经明确推荐了静态访问,所以我想这是一种方式。但我仍然认为它非常丑陋:-)是的,这种访问在Wicket中似乎是惯用的。这可能是因为Wicket创建了一个受控的环境来访问这些类(包括内置的单元测试支持)。就我个人而言,由于并发性问题,我喜欢将它的使用限制在不可变的配置上(Wicket在很多方面保证了单线程,但显然不适用于应用范围。)
public static MyApllication getMyApplication() {
return (MyApllication) get();
}
public static MyApllication get() {
return (MyApllication ) WebApplication.get();
}