小编lim*_*imc的帖子

使用哪一个:OpenSessionInViewInterceptor或OpenSessionInViewFilter?

我很难决定使用哪个"Open Session In View":使用Spring MVC的拦截器配置OpenSessionInViewInterceptor或在web.xml的过滤器中配置OpenSessionInViewFilter?根据我的研究,它们几乎完全相同,但我试图理解每种类型的差异和用法.

两者之间最大的区别在于那些不能在web.xml中使用过滤器的人(比如servlet 2.2及更早版本),他们唯一的选择就是使用OpenSessionInViewInterceptor.不知何故,我倾向于拦截器只是因为我必须为我的项目创建一个自定义拦截器,所以我想在Spring MVC配置文件中对所有这些"过滤器"进行分组,而不是在web.xml和我的自定义中使用OpenSessionInViewFilter Spring MVC配置文件中的拦截器.决定使用哪一个真的是一种蹩脚的方式,我的好奇心在这里杀了我.

有人可以分享你对此的看法吗?你们用哪一个?

谢谢.

java hibernate spring-mvc interceptor servlet-filters

5
推荐指数
2
解决办法
3513
查看次数

NSIS:无法从Windows 7 64位的注册表中获取JRE版本

我正在使用NSIS脚本为我的Java项目生成Windows安装程序.在此安装程序中,我想在继续之前检查计算机是否具有正确的JRE版本.

这是我获取JRE版本的代码片段: -

ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"

# display $1 value for testing purpose
MessageBox MB_OK "Version: $1"
Run Code Online (Sandbox Code Playgroud)

此代码在Windows XP中运行良好,但我无法在Windows 7 64位中运行...版本号始终为空.我检查注册表,我很确定路径是正确的,"CurrentVersion"有一个值.

谁能告诉我这里做错了什么?

非常感谢!

registry nsis

4
推荐指数
1
解决办法
3354
查看次数

Spock:从CSV文件中读取测试数据

我正在尝试编写一个优雅的Spock规范,该规范将从CSV文件中读取非常大的测试数据,而无需将所有数据加载到内存中.我正在寻找你的反馈,你可能会比我现在拥有的更好.

我们假设我的简化CSV文件如下所示: -

1,2
3,4
5,6
Run Code Online (Sandbox Code Playgroud)

断言是 "column 1" + 1 == "column 2"

我正在使用OpenCSV来进行我的CSV解析,因为实际的CSV文件包含带有双引号和逗号等特殊字符的字符串,以及通过用逗号分割字符串的基本解析,这样就不起作用了.

<dependency>
    <groupId>net.sf.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>2.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

尝试1

我的第一次尝试是遍历CSV并在每一行上执行断言.虽然这种方法有效,但我无法@Unroll将每个断言隔离到单独的独立测试中.

def "read from csv"() {
    expect:
    def reader = new CSVReader(...)
    def fields

    while ((fields = reader.readNext()) != null) {
        def firstNum = Integer.valueOf(fields[0])
        def secondNum = Integer.valueOf(fields[1])

        firstNum + 1 == secondNum
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试2

这种尝试允许我使用,@Unroll但这需要将整个数据加载到内存中,这是我首先想要避免的.

@Unroll
def "read from csv"() {
    expect:
    Integer.valueOf(firstNum as String) + 1 == Integer.valueOf(secondNum as String)

    where: …
Run Code Online (Sandbox Code Playgroud)

csv groovy unit-testing opencsv spock

4
推荐指数
1
解决办法
4265
查看次数

如何从JQuery的AJAX回调函数中显示整个XML?

我有这个简单的代码来查询Web服务: -

$.get( url ,  
    function(xml) {
        var hello = $(xml).find("hello").text();
        ...

        alert(xml); // displays [object XMLDocument]
        alert($(xml)); // displays [object Object]
    }                       
);
Run Code Online (Sandbox Code Playgroud)

这很好用,但我有兴趣从回调函数中看到整个XML结构用于调试目的.我尝试了一些东西,但我无法显示XML.我想看到的是这样的: -

<stuff>
    <hello>bear</hello>
</stuff>
Run Code Online (Sandbox Code Playgroud)

任何线索?谢谢.

javascript jquery

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

CSS背景渐变在IE 8中不起作用

我通过谷歌CDN使用JQuery UI的默认主题(晴天,如果这很重要).我想ui-widget-header用CSS背景渐变替换默认背景.这是我的示例用法: -

<h3 class="ui-widget-header">Some Title</h3>
Run Code Online (Sandbox Code Playgroud)

我的CSS看起来像这样: -

.ui-widget-header {
    background: #003366; /* default */
    background: -moz-linear-gradient(top center, #FFFFFF, #003366);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0.00, #FFFFFF), color-stop(1.00, #003366));
    background: -ms-linear-gradient(top center, #FFFFFF, #003366);
    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#FFFFFF', endColorstr='#003366'); /* IE6 & IE7 */
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#FFFFFF', endColorstr='#003366')"; /* IE8 */
}
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox和Safari,但IE 8正在拾取默认背景,并且过滤器不执行任何操作.

我该如何解决?

css jquery jquery-ui css3

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

如何优雅地禁用/启用所有jQuery UI按钮?

我目前在不同的页面中有几个动作按钮,每个按钮在单击时执行一些AJAX调用.换句话说,我在各地都有这样的代码: -

$("#searchButton")
    .button()
    .click(function() {
        ...
        $.get(url, { data: ...},  function(data) { ... });
        ...
    });
Run Code Online (Sandbox Code Playgroud)

在进行一些测试之后,似乎在调用回调函数之前,某些AJAX调用至少要花费几秒钟来处理.

我的计划是在进行AJAX调用时禁用该按钮,并在AJAX调用完成时将其启用.这是为了防止用户在处理请求时多次单击该按钮.我找到的一个解决方案是利用unbind()bind()功能.修改我的代码后,它现在看起来像这样: -

var searchButtonClickHandler = function() {
    ...
    $.get(url, { data: ...},  function(data) { ... });
    ...
};

$("#searchButton")
    .button()
    .ajaxStart(function() {
        $(this).button("disable").unbind("click");
    })
    .ajaxStop(function() {
        $(this).button("enable").bind("click", searchButtonClickHandler);
    })
    .click(searchButtonClickHandler);
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常.基本上,它在进行AJAX调用时删除了单击处理程序,并在完成AJAX调用时返回单击处理程序.

我的问题是...是有可能一概而论按钮禁用/启用,这样我就不必实现ajaxStart()ajaxStop所有的UI按钮?

理想情况下,我想使用我之前的代码片段仅在按钮上注册click事件处理程序,然后使用.ui-button选择器启用/禁用所有按钮,如下所示......

$(".ui-button")
    .ajaxStart(function() {
        $(this).button("disable").unbind("click");
    })
    .ajaxStop(function() {
        // not sure how to bind the handler here
        $(this).button("enable").bind("click", ?? ); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui

2
推荐指数
1
解决办法
6203
查看次数

window.setTimeout无法正常运行

我试图最终让这个代码工作:

function Timer(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        window.clearTimeout(timerId);
        remaining -= new Date() - start;
    };

    this.resume = function() {
        start = new Date();
        timerId = window.setTimeout(callback, remaining);
    };

    this.resume();
}

var timer;

function onEvent(){
     timer = new Timer(anotherEvent(), 5000);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所以我简化它以查看可能存在的问题,并将其归结为:

var timer;

function event(){
     timer = window.setTimeout(anotherEvent(), 5000);
}
Run Code Online (Sandbox Code Playgroud)

它所做的只是另一个事件().

有任何想法吗?

javascript window timer settimeout

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