Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wicket:定义应用程序范围的变量_Java_Session_Wicket - Fatal编程技术网

Java Wicket:定义应用程序范围的变量

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

我想对用户正在做的事情做一点“记录”。我有不同的面板,所有这些面板都有Ajax功能,比如“onclick”、“onevent”和“onchange”。我计划定义一个应用程序范围的字符串数组列表来记录所有事情。

我在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
over
WebApplication
(或
WebApplication
over
Application
)是如何由Wicket团队验证的,并且似乎是规范的

顺便说一句,您将拥有idea访问/执行取决于用户/会话的操作。类似的想法存在:
WebSession
MySession
中覆盖。正常的使用方式是(静态)方法。这是典型的,不要害怕

MyApllication m = MyApllication.get();
因此,在每个wicket对象中,genrally都很容易。 通常“静态重写”以返回正确的类型(并且可以提供额外的控制)

当这个静态方法返回正确的类型时,问题就解决了

分析构建
AuthenticatedWebApplication
over
WebApplication
(或
WebApplication
over
Application
)是如何由Wicket团队验证的,并且似乎是规范的


顺便说一句,您将拥有idea访问权限/根据用户/会话执行操作类似的想法存在:
WebSession
override in
MySession
我认为您做错了(在多个级别上)

首先:如果你想记录,使用一个记录框架。例如,最好通过

第二:如果你不想使用日志框架,创建一个日志服务(一个专用对象,而不是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();
    }