Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Wicket下载链接_Wicket - Fatal编程技术网

Wicket下载链接

Wicket下载链接,wicket,Wicket,在Wicket页面上,我有一个显示在submit上的图像(AbstractDefaultAjaxBehavior.INDICATOR),然后我启动AjaxSelfUpdatetingTimerBehavior来监视文件 现在我还有一个下载链接来下载相同的文件。但是,下载后,我上面提到的图像(正在旋转)停止旋转。这个问题有解决办法吗?我对维克特不熟悉。请建议 public LoggingPage() { Form<Void> form; this.add(form = ne

在Wicket页面上,我有一个显示在submit上的图像(AbstractDefaultAjaxBehavior.INDICATOR),然后我启动AjaxSelfUpdatetingTimerBehavior来监视文件

现在我还有一个下载链接来下载相同的文件。但是,下载后,我上面提到的图像(正在旋转)停止旋转。这个问题有解决办法吗?我对维克特不熟悉。请建议

public LoggingPage() {

 Form<Void> form;
    this.add(form = new Form<Void>("resourceForm") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            submit();
        }
    });
   add(new DownloadLink("downloadButton", new AbstractReadOnlyModel<File>()
    {
        private static final long serialVersionUID = 1L;

        @Override
        public File getObject()
        {
            File file;
            try
            {
                file = new File(LoggingPage.this.fileDetail.getLocation());
            }
            catch (Exception e)
            {
                throw new RuntimeException(e);
            }
            return file;
        }
    }));

}//cons ends

 private void submit() {
    if (this.serverDetail != null && this.fileType != null && this.fileDetail != null)
    {
        if (this.fileViewer != null)
        {
            this.repeater.removeAll();
        }
        File file = new File(this.fileDetail.getLocation());
        file = new File("C:/ueshome/logs/safe.log");
        this.fileViewer = new FileViewer(file);
        this.fileViewer.startTailing();
        log.debug("load of allLog: " + this.fileViewer.getOldLog());
        buildItem(this.fileViewer.getOldLog().getLog().toString());
        this.container.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1))
        {
            @Override
            protected void onPostProcessTarget(final AjaxRequestTarget target)
            {
                target.appendJavascript("$('#container').scrollTop( 999999999 )");
                log.debug("onPostProcessTarget: " + LoggingPage.this.fileViewer.hashCode() + "at: " + System.currentTimeMillis());
                final FileAttributes fileAttributes = LoggingPage.this.fileViewer.getNewLog();
                String newLog = fileAttributes.getLog().toString();
                log.debug("nextlog inside load()");
                if (newLog != null && newLog.trim().length() > 0)
                {
                    log.debug("~~~~~~~~~~~~~~~~~~~~````*****:" + newLog);
                    log.debug("String.valueOf(fileAttributes.getSize()))~~~~~~~~~~~~~~~~~~~~````*****:" + String.valueOf(fileAttributes.getSize()));
                    log.debug("String.valueOf(fileAttributes.getLastModified()): " + String.valueOf(fileAttributes.getLastModified()));

                    if (LoggingPage.this.repeater.getSizeInBytes() >= logSize)
                    {
                        LoggingPage.this.repeater.removeAll();
                    }
                    Component item = buildItem(newLog);

                    target.prependJavascript(String.format(
                            "var item=document.createElement('%s');item.id='%s';Wicket.$('%s').appendChild(item);",
                            "div", item.getMarkupId(), LoggingPage.this.container.getMarkupId()));

                    //                      LoggingPage.this.imgContainer.setVisible(true);
                    //                      target.addComponent(LoggingPage.this.imgContainer);
                    target.addComponent(item);

                    target.appendJavascript("$('#fileAttributesContainer').show(); ");
                    target.appendJavascript("$('#container').scrollTop( 999999999 )");
                    target.appendJavascript("$('#imageContainer').show(); ");

                }
                else
                {
                    target.appendJavascript("$('#fileAttributesContainer').show(); ");
                    target.appendJavascript("$('#container').scrollTop( 999999999 )");
                    target.appendJavascript("$('#imageContainer').show(); ");
                }

                target.appendJavascript("alert('You are in Ajax Self')");
            }
公共日志页面(){
形式;
this.add(表单=新表单(“资源表单”){
私有静态最终长serialVersionUID=1L;
@凌驾
受保护的void onSubmit(){
提交();
}
});
添加(新的下载链接(“下载按钮”,新的AbstractReadOnlyModel)()
{
私有静态最终长serialVersionUID=1L;
@凌驾
公共文件getObject()
{
文件;
尝试
{
file=新文件(LoggingPage.this.fileDetail.getLocation());
}
捕获(例外e)
{
抛出新的运行时异常(e);
}
返回文件;
}
}));
}//缺点
私人提交{
if(this.serverDetail!=null&&this.fileType!=null&&this.fileDetail!=null)
{
如果(this.fileViewer!=null)
{
this.repeater.removeAll();
}
File File=新文件(this.fileDetail.getLocation());
file=新文件(“C:/ueshome/logs/safe.log”);
this.fileViewer=新的fileViewer(文件);
this.fileViewer.startTailing();
debug(“加载所有日志:+this.fileViewer.getOldLog());
buildItem(this.fileViewer.getOldLog().getLog().toString());
this.container.add(新的AjaxSelfUpdatetingTimerBehavior(持续时间.秒(1))
{
@凌驾
PostProcessTarget上受保护的无效(最终AjaxRequestTarget目标)
{
target.appendJavascript(“$('#container').scrollTop(999999999)”;
log.debug(“onPostProcessTarget:”+LoggingPage.this.fileViewer.hashCode()+”位于:“+System.currentTimeMillis());
final FileAttributes FileAttributes=LoggingPage.this.fileViewer.getNewLog();
字符串newLog=fileAttributes.getLog().toString();
debug(“nextlog inside load()”;
if(newLog!=null&&newLog.trim().length()>0)
{
log.debug(“~~~~~~~~~~~~~~~~~~~~~~~~`****:“+newLog”);
log.debug(“String.valueOf(fileAttributes.getSize())~~~~~~~~~~~~~~~~~~~~~~~`****:”+String.valueOf(fileAttributes.getSize());
log.debug(“String.valueOf(fileAttributes.getLastModified()):”+String.valueOf(fileAttributes.getLastModified());
if(LoggingPage.this.repeater.getSizeInBytes()>=logSize)
{
LoggingPage.this.repeater.removeAll();
}
组件项=构建项(newLog);
target.prependJavascript(String.format(
“var item=document.createElement('%s');item.id='%s';Wicket.$('%s')。appendChild(item);”,
“div”,item.getMarkupId(),LoggingPage.this.container.getMarkupId());
//LoggingPage.this.imgContainer.setVisible(true);
//target.addComponent(LoggingPage.this.imgContainer);
目标。添加组件(项目);
target.appendJavascript(“$('#fileAttributesContainer').show();”;
target.appendJavascript(“$('#container').scrollTop(999999999)”;
target.appendJavascript(“$('#imageContainer').show();”;
}
其他的
{
target.appendJavascript(“$('#fileAttributesContainer').show();”;
target.appendJavascript(“$('#container').scrollTop(999999999)”;
target.appendJavascript(“$('#imageContainer').show();”;
}
appendJavascript(“警报(‘您在Ajax中’)”);
}

首先,我必须承认,我现在不知道您的代码可能有什么问题。它看起来与我将如何解决您的任务大不相同

据我所知,您希望在用户点击“提交”按钮后创建一个动画图像(动画gif),对吧。在满足特定条件(文件生成完成等)后,它应该停止动画。此外,您还希望为您的文件创建一个下载链接

我要做的是

  • 使用将显示的动画gif
  • 添加一个AjaxSelfUpdatengTimerBehavior来检查您的文件,如果满足某个条件,它将更改图像(可能通过更改图像本身、设置图像的可见性或更改图像容器的某些css属性)
  • 对于文件下载,我会使用ajax按钮,或者如果您不需要更改任何内容,则使用一个普通的链接为您的文件提供资源流

希望这有点帮助。

您能提供一个代码示例吗?我已经添加了示例代码。感谢您的快速响应。将来添加代码时,只需编辑您的问题,而不是在答案中发布。您能提供上面第3点的示例代码吗(对于文件下载,我会使用一个ajax按钮,或者如果您不需要更改任何内容,则使用一个普通链接为您的文件提供资源流)很抱歉回答得太晚。我在github上提供了一个简单的示例:它提供了一个标签和一个下载链接。当你点击链接时,下载将启动,标签将通过ajax更改。其核心部分(AjaxDownloadBehavior)记录在wicket wiki中: