Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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中的autocompletetextfield工作_Java_Session_Autocomplete_Wicket - Fatal编程技术网

Java 如何在会话超时后使Wicket中的autocompletetextfield工作

Java 如何在会话超时后使Wicket中的autocompletetextfield工作,java,session,autocomplete,wicket,Java,Session,Autocomplete,Wicket,我一直在玩Wicket autocompletetextfield。但是它有一个问题——当会话超时时,如果页面本身没有刷新,它将停止工作。我想这对一个客户来说是相当令人困惑的,我想这并不意味着要这样做。因此,即使会话超时(并且不刷新页面),如何使Wicket autocompletetextfield工作 要亲自尝试: 去 在文本字段中写些东西,如贝尔 等待5分钟(我想这是他们在示例中使用的默认会话超时),然后重试,不刷新 这一页。现在你只会得到一个空白的文本字段 我想你不能 我知道的唯一解决方

我一直在玩Wicket autocompletetextfield。但是它有一个问题——当会话超时时,如果页面本身没有刷新,它将停止工作。我想这对一个客户来说是相当令人困惑的,我想这并不意味着要这样做。因此,即使会话超时(并且不刷新页面),如何使Wicket autocompletetextfield工作

要亲自尝试:

  • 在文本字段中写些东西,如贝尔
  • 等待5分钟(我想这是他们在示例中使用的默认会话超时),然后重试,不刷新 这一页。现在你只会得到一个空白的文本字段
  • 我想你不能

    我知道的唯一解决方法是设置Ajax错误处理策略,将_重定向到_error_页面,在错误页面的HTTP头中计算Referer字段,并提供指向发生超时的页面的链接(或自动重定向)

    YourWicketApplication.java

    @Override
    public void init() {
        super.init();
        // ...
        getExceptionSettings().setAjaxErrorHandlingStrategy(IExceptionSettings.AjaxErrorStrategy.REDIRECT_TO_ERROR_PAGE);
    
    }
    
    YourErrorPage.java:

    public YourErrorPage(...) {
        // ...
        WebRequest request = (WebRequest) getRequest();
        String referer = request.getHeader("Referer"));
        // ... provide a link/auto redirect to this address
    }
    

    AutoCompleteTextField是有状态的,因此它需要其页面处于活动状态。您可以尝试使用纯javascript自动完成组件(),并使用Wicket资源生成的JSON(这将是无状态的)。谢谢,这就是我想要的答案。据我所知,我不能将带有AJAX组件的页面设置为无状态(至少在Wicket 1.6x中是这样),因此我必须考虑另一种解决方案。我见过的另一个解决方案是每X分钟ping一个servlet以保持会话的活动性。