小编Har*_*der的帖子

JSF如何从支持bean重定向到在辅助bean中动态构造的URL?

一个例子应该有希望证明这个问题.我有10个文档显示在页面上,其中3个包含在zip包中的附加信息.在初始页面加载期间,我只知道哪些文档有这些附加信息,我知道这些zip文件的URL.然后,我在包含其他zip文件的3个文档中显示一个链接("获取Zip包").当用户点击"获取Zip包"时,它会调用支持bean中的一个方法,该方法会进入数据库以找出zip包的URL.完成后,我想将zip包提供给浏览器,然后弹出"另存为..."对话框,用户可以保存zip包.

我尝试了两种方法,但它们都不起作用.

方法1

<p:commandLink actionListener="#{myBackingBean.zipPackage(aDocument)}"
               value="Get Zip Package"
               ajax="false"
               rendered="#{aDocument.packageAvailable}"/>
Run Code Online (Sandbox Code Playgroud)
public String zipPackage(DocItem item){
  //logic here to figure out the URL for this item's zip package
  return packageLink;
}
Run Code Online (Sandbox Code Playgroud)

方法2

<h:outputLink onclick="getPackageLink([{name:'product', value: '#{aResult.product}'}, {name:'version',value:'#{aResult.version}'}])"
   <h:outputText value="Get Documentation Package"/>
</h:outputLink>
<p:remoteCommand name="getPackageLink" actionListener="#{kbBackingBean.zipPackage()}"/>
Run Code Online (Sandbox Code Playgroud)
public String zipPackage() {
  Map map = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
  String product = (String) map.get("product");
  String version = (String) map.get("version");
  //logic here to figure out the URL for this item's zip package
  return packageLink;
}
Run Code Online (Sandbox Code Playgroud)

当页面加载并显示10个文档时,"获取Zip包"链接(对于3个文档)指向任何内容,基本上与页面具有相同的URL.当我点击它时,它会向服务器发送一个GET请求并调用支持bean函数.使用方法1,浏览器似乎在开始呈现响应之前等待辅助bean方法完成.使用方法2,没有等待,浏览器立即重新加载页面.我怀疑由于'Get Zip …

jsf primefaces

11
推荐指数
1
解决办法
3万
查看次数

Logback扫描无法正常工作

我无法使用logback的自动扫描功能工作.它似乎没有发现变化.我已经将section ="true"添加到section并读取它的输出,一切似乎都很好.它清楚地说明了每30秒监视logback.xml文件的变化.我不知道为什么没有采取改变措施.只是寻找一些指导我如何进一步解决这个问题.谢谢.

我应该提一下,logback正好记录到文件,只是没有获取对logback配置文件的更改.

logback.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="true">

    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />  

    <property name="LOGS_PATH" value="C:\\Users\\****\\Desktop\\css_dev\\q_logs" />

    <appender name="scheduledTasksAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS_PATH}/scheduledTasks.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOGS_PATH}/scheduledTasks.%i.log.zip</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>25</maxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>

        <encoder>
            <pattern>%d{MMM/dd/yyyy HH:mm:ss} %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="tasks" level="warn" additivity="false">
        <appender-ref ref="scheduledTasksAppender"/>
    </logger>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Web应用程序启动时输出到Tomcat日志:

|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
|-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/*****/Desktop/css_dev/ProjectQ/build/web/WEB-INF/classes/logback.xml]
|-INFO in …
Run Code Online (Sandbox Code Playgroud)

java debugging logback

8
推荐指数
2
解决办法
9867
查看次数

jQuery没有按正确的顺序执行?

我最近开始使用jQuery,今天发现了一个奇怪的问题,它对我的​​行为如何.据我了解,JavaScript是单线程的.所以它的所有操作都应该以FIFO为基础运行.但是,对我来说,情况似乎并非如此.请考虑以下事项.

SETUP如下

HTML:

3个div

  • div#1 =>包含可以单击以执行排序功能的标题元素

  • div#2 =>包含需要排序的数据

  • div#3 =>包含一个基本的.gif文件,用于通知用户正在执行某些操作

jQuery - 包含执行DOM操作的sort函数.基本上,它从HTML页面读取数据,存储在2D数组中,并对数组进行排序.然后它使用排序数组中的数据完全清除div#2(数据div)并重建它.

执行预计如下

  • 用户单击其中一个标题以触发排序功能
  • sort函数隐藏div#2并显示div#3
  • 执行sort函数
  • 排序完成后,显示div#2(数据div),隐藏div#3

但是,这似乎发生了什么

  • 用户单击标题

  • 排序发生

  • 在最后一步隐藏和显示div

最初,由于我无法看到任何显示/隐藏的div,我认为它发生得太快,我无法注意到.所以我给jQuery的.show()和.hide()函数添加了一个时间延迟.一旦完成,很明显,最终会显示和隐藏动作.

*解决方案* 经过大量搜索,我设法通过使用jQuery .queue()和.dequeue()函数来实现这一点.这里的阿喀琉斯之踵是我必须在每次手术之间插入1毫秒的延迟.然后,只有这样,浏览器能够隐藏/显示我想要的div.所以操作就是这样的:

    var theQueue = $({}); // jQuery on an empty object

theQueue.queue("testQueue",
                function( next) {
                    $("#loadingIndicator").show();
                    $("#cases").hide();
                    next();
                }
            );
theQueue.delay( 1, "testQueue" );

theQueue.queue("testQueue",
                function( next) {
                    doSort(columnNumber);  //SORT
                    next();
                }
            );
theQueue.delay( 1, "testQueue" );

theQueue.queue("testQueue",
                function( next) {
                    $("#loadingIndicator").hide();
                    $("#cases").show();
                    next();
                }
            );

theQueue.dequeue("testQueue");
Run Code Online (Sandbox Code Playgroud)

}

我当然不是这方面的专家,但我认为操作应该按照调用的顺序执行.浏览器是否以正确的顺序呈现?jQuery是否改变了操作顺序以提高效率?

虽然"解决方案"完成了这项工作,但我不相信它是这种情况下的最佳解决方案.有没有其他方法可以做到这一点?如果需要,我可以提供可以证明问题的工作代码示例.谢谢.

另一方面,我注意到大数据集,当用户点击标题元素触发排序时,浏览器变得无法响应.我意识到它正在执行sort函数,但我希望有一种方法可以避免这种情况.有什么想法吗?

jquery

6
推荐指数
1
解决办法
1833
查看次数

angular2使用PrimeNG-Scheduler实现FullCalendar-Scheduler

FullCalendar有一个名为Scheduler的附加组件,我试图与PrimeNG-Schedule组件一起使用.查看PrimeNG文档,我可以使用"选项"属性向FullCalendar发送任意信息.这确实有效,但是当我将数据检索连接到异步API时,会导致问题.

API使用Observables然后我在组件中订阅.这适用于事件,因为视图在事件更改时自动更新.

但是,当通过PrimeNG'选项'属性向FullCalendar提供'资源'时,事情不能按预期工作,因为设置'options'属性的代码在API调用有机会返回之前运行,因此空.

我确信这一点,因为如果我对资源进行硬编码,就会有所作为.

我可以想出几种方法来解决这个问题:

  1. 使调用同步(想避免这种情况)

  2. 等待所有数据加载然后(重新)渲染视图(使其与#1几乎相同)

  3. 配置options.resources属性,以便在更改时,视图会更新,就像它对事件一样(这是最好的选择,但不确定它是否可能)

我将不胜感激任何帮助.谢谢.

<p-schedule 
    [events]="events" 
    [businessHours]="businessHours"
    [options]="optionConfig"
    >
</p-schedule>
Run Code Online (Sandbox Code Playgroud)

我的(现在)虚拟API

getEvents() {
    return this.http
    .get('assets/api/mockEvents.json')
    .map((response : Response) => <Appointment[]>response.json().data)
    .catch(this.handleError);
  }

  getResources() {
    return this.http
    .get('assets/api/mockResources.json')
    .map((response : Response) => <Resource[]>response.json().data)
    .catch(this.handleError);
  }
Run Code Online (Sandbox Code Playgroud)

组件文件

ngOnInit() {

  this.schedulerService.getEvents()
      .subscribe(events=> this.events = events);

      this.schedulerService.getResources()
      .subscribe(resources => this.resources = resources);
      // ***** If the following code is uncommented, resources are displayed in Schedule view ****
    // this.resources = [
    //     new Resource(1, "Dr. Hibbert", "blue", true, …
Run Code Online (Sandbox Code Playgroud)

schedule primeng angular2-observables angular

5
推荐指数
1
解决办法
1692
查看次数