小编car*_*tax的帖子

如何在spring4中配置"CommonsMultipartResolver"而不用xml来上传文件

我使用xml配置spring4工作得很好.像这样:

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
    p:defaultEncoding="utf-8" >
    <!-- one of the properties available; the maximum file size in bytes -->  
    <!-- <property name="maxUploadSize" value="40000000" /> -->  
</bean>
Run Code Online (Sandbox Code Playgroud)

当我配置spring4而没有xml.like时:

@Configuration
@ComponentScan({ "common.user", "service" })
@EnableWebMvc
public class SpringMVCConfig {

@Bean
public ViewResolver createInternalResourceViewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setContentType("text/html");
    viewResolver.setPrefix("/view/");
    //viewResolver.setSuffix(".jsp");
    return viewResolver;
}

@Bean
public DefaultServletHttpRequestHandler createDefaultServletHttpRequestHandler() {
    return new DefaultServletHttpRequestHandler();
}


@Bean
public CommonsMultipartResolver createMultipartResolver() {
    CommonsMultipartResolver resolver=new CommonsMultipartResolver();
    resolver.setDefaultEncoding("utf-8");
    return resolver;
}
Run Code Online (Sandbox Code Playgroud)

}

它引发了一个异常:

 ?? 30, 2014 …
Run Code Online (Sandbox Code Playgroud)

java file spring-mvc uploading spring-4

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

如何为exec-war目标排除extraDependency META-INF文件?

我的问题正是这个maven-shade插件用户面临的问题:

如何从bundle中排除META-INF文件?

但我正在使用tomcat7-maven-plugin构建一个自运行的webapp.我最近切换了数据库驱动程序以使用Microsoft自己的驱动程序来实现JDBC4.现在我有问题,包括它作为我的exec-war目标中的extraDependency.这是相关部分pom.xml.

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <executions>
        <execution>
            <id>tomcat-run</id>
            <goals>
                <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <path>/oases</path>
                <contextFile>applicationContext.xml</contextFile>
                <extraDependencies>
                    <extraDependency>
                        <groupId>com.microsoft.sqlserver</groupId>
                        <artifactId>sqljdbc4</artifactId>
                        <version>4.0</version>
                    </extraDependency>
                </extraDependencies>
                <excludes>
                    <exclude>META-INF/MSFTSIG.RSA</exclude>
                </excludes>
           </configuration>
       </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

该项目构建正常,但maven不遵守该exclude指令,以便sqljdbc4 RSA文件包含在META-INF目录中.这意味着当我尝试运行我的exec-war jar文件时,我收到此错误.

Exception in thread "main" java.lang.SecurityException: Invalid 
    signature file digest for Manifest main attributes
Run Code Online (Sandbox Code Playgroud)

我已经阅读了代码,据我所知,插件已正确配置为排除sqljdbc4 META-INF文件.这是版本2.2的插件代码,这是我正在使用的.看起来这应该做我想要的.然而,exec-war jar仍包括META-INF/MSFTSIG.RSA

org.apache.tomcat.maven.plugin.tomcat7.run.AbstractExecWarMojo.java

protected void extractJarToArchive( JarFile file, ArchiveOutputStream os, String[] excludes )
    throws IOException
    {
        Enumeration<? extends JarEntry> entries = file.entries();
        while ( entries.hasMoreElements() )
        { …
Run Code Online (Sandbox Code Playgroud)

maven maven-tomcat-plugin

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

AliasToBeanResultTransformer(MyDTO.class)无法实例化MyDTO

我想要一个Criteria查询来使用AliasToBeanResultTransformer实例化一个DTO类.目标是生成一个轻量级分页列表,其中包含用于主页进一步操作的ID.这需要报告类型查询.

            Criteria crit = session.createCriteria(Profile.class);

        crit.createAlias("personalData", "pd");
        crit.createAlias("emails", "e");
        crit.createAlias("telephones", "t");

        ProjectionList properties = Projections.projectionList();
        properties.add(Projections.property("id").as( "id"));
        properties.add(Projections.property("pd.lastName").as("lastName"));
        properties.add(Projections.property("pd.fullName").as("fullName"));
        properties.add(Projections.property("e.emailAddress").as("email"));
        properties.add(Projections.property("t.phoneNumber").as("phone"));

        crit.setProjection(properties);

        crit.setResultTransformer(new AliasToBeanResultTransformer(ProfileDTO.class));
        profiles = crit.list();
Run Code Online (Sandbox Code Playgroud)

这无法实例化我的DTO类.ProfileDTO有一个匹配的构造函数:

public ProfileDTO(Long id, String lastName, String fullName, String email,
        String phone) {
    this(id,fullName);
    this.lastName = lastName;
    this.email = email;
    this.phone = phone;
}
Run Code Online (Sandbox Code Playgroud)

当我使用结果行手动构造ProfileDTO对象时,查询有效

        List<Object[]> rows = crit.list();

        for ( Object[] row: rows ) {
            ProfileDTO dto = new ProfileDTO();
            dto.setId((Long)row[0]);
            dto.setLastName((String)row[1]);
            dto.setFullName((String)row[2]);
            dto.setEmail((String)row[3]);
            dto.setPhone((String)row[4]);
            profiles.add(dto);
        }
Run Code Online (Sandbox Code Playgroud)

我的解决方法工作正常,但似乎没必要.我究竟做错了什么?

hibernate

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

Knockout JS css"else"条件

我想在Knockout中这样做.

    <span class="badge" data-bind="text: rank, css: {'badge-success': firstPlace, 
        'badge-warning': !firstPlace}"></span>
Run Code Online (Sandbox Code Playgroud)

我的javascript模型类有这个方法

    self.firstPlace = ko.computed(function() {
        return self.rank() == 1;
    });
Run Code Online (Sandbox Code Playgroud)

这无法生成"徽章警告"类.我在data-bind属性中尝试了一些调用变体,例如firstPlace == false(!firstPlace).相反,我必须在我的模型中添加第二个反向方法:

    <span class="badge" data-bind="text: rank, css: {'badge-success': firstPlace, 
        'badge-warning': notFirstPlace}"></span>


    // YUCK
    self.notFirstPlace = ko.computed(function() {
        return self.rank() != 1;
    });
Run Code Online (Sandbox Code Playgroud)

当然,这是有效的.对于Knockout JS来说真的很有趣,这真的很有趣.但这似乎是错的.有谁有更好的方法?

knockout.js

4
推荐指数
2
解决办法
7406
查看次数

如何在解析Promise时运行qunit断言

我正在为一个返回promise的函数编写测试,并且无法在解析或拒绝promise时运行断言.我不能在这个项目上使用ES6所以我使用的是声称实现Promises/A +规范的rsvp.js库.我正在使用最新的qunit版本1.17.1

被测功能:

var loadGroups = function(data) {
     return new RSVP.Promise(function(resolve, reject) {
        var groups = [];
        // ... some code to populate the groups array
        if(groups.length > 0) {
            resolve(groups);
        } else {
            reject("No groups were loaded");
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

成功测试:

test('success test', function(assert) {
    assert.expect(1);

    var promise = loadGroups(testData);

    promise.then(function(groups) {
        assert.deepEquals(groups.length, 1);
    });

    return promise;
});
Run Code Online (Sandbox Code Playgroud)

这失败了"预期的1个断言,但是0运行"


失败测试:

test('failure test', function(assert) {
    assert.expect(1);

    var promise = loadGroups([]);

    promise.then(null, function(message) {
        assert.equals(message, "No groups were loaded");
    });

    return …
Run Code Online (Sandbox Code Playgroud)

javascript qunit promise rsvp.js rsvp-promise

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