小编NA.*_*NA.的帖子

在Spring-MVC控制器中触发404?

如何让Spring 3.0控制器触发404?

我有一个控制器,@RequestMapping(value = "/**", method = RequestMethod.GET)有些URL访问控制器,我希望容器能够提供404.

java spring spring-mvc

182
推荐指数
9
解决办法
13万
查看次数

用jsonpath计算成员?

是否可以使用JsonPath计算成员数?

使用spring mvc test我正在测试一个生成的控制器

{"foo": "oof", "bar": "rab"}
Run Code Online (Sandbox Code Playgroud)

standaloneSetup(new FooController(fooService)).build()
            .perform(get("/something").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
            .andExpect(jsonPath("$.foo").value("oof"))
            .andExpect(jsonPath("$.bar").value("rab"));
Run Code Online (Sandbox Code Playgroud)

我想确保生成的json中没有其他成员.希望通过使用jsonPath计算它们.可能吗?也欢迎替代解决方案.

java testing spring jsonpath spring-test-mvc

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

JPA没有将外键保存到@OneToMany关系

我正在使用Spring和Hibernate作为JPA提供程序,并且正在尝试获取@OneToMany(具有许多phonenumbers的联系人)以将外键保存在电话号码表中.从我的表单中我得到一个Contact对象,其中包含Phone(数字)列表.Contact正确持久化(Hibernate从指定的序列中获取PK).电话(号码)列表也会以正确的PK保留,但是联系人表格中没有FK.

public class Contact implements Serializable {

    @OneToMany(mappedBy = "contactId", cascade = CascadeType.ALL, fetch=FetchType.EAGER)
    private List<Phone> phoneList;

}

public class Phone implements Serializable {

    @JoinColumn(name = "contact_id", referencedColumnName = "contact_id")
    @ManyToOne
    private Contact contactId;

}

@Repository("contactDao")
@Transactional(readOnly = true)
public class ContactDaoImpl implements ContactDao {

    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void save(Contact c) {
        em.persist(c);
        em.flush();
    }
}


@Controller
public class ContactController {
    @RequestMapping(value = "/contact/new", method = RequestMethod.POST)
    public ModelAndView newContact(Contact c) {
        ModelAndView mv = new …
Run Code Online (Sandbox Code Playgroud)

java spring jpa

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

使用Spring的动态表单更好的方法?

我想知道在使用SpringMVC和Spring表单时是否有更简单/更好的方法来处理动态表单(通过js向dom添加表单项)?

具有Invoice对象的成像具有许多LineItem.

public class Invocie {
    private List LineItems;

    public Invoice() {
        lineItems = ListUtils.lazyList(new ArrayList<LineItem>(), FactoryUtils.instantiateFactory(LineItem.class));
    }
}
Run Code Online (Sandbox Code Playgroud)

显示属于我当前使用的发票的项目

<forEach items="${invoice.lineItems}" varStatus="i">
  <form:input path="lineItems[${i.index}].productName" />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

要添加LineItems,我有一些js计算新索引并将其添加到DOM.删除LineItem时,我当前必须重新编号所有索引,这是我想避免的部分,是否可能?

java spring spring-mvc

17
推荐指数
2
解决办法
2万
查看次数

jackson2 JSON ISO 8601来自JodaTime in Spring 3.2RC1

我正在使用Spring MVC 3.2RC1中的REST API.

我正在获取一个带有org.joda.time.DateTime时间戳的JPA实体,并让Spring将其序列化为JSON

@RequestMapping(value = "/foobar", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
Run Code Online (Sandbox Code Playgroud)

使用Spring中的默认Jackson2设置,因为我只添加了

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

到我的POM,让Spring自己连接它.

控制器正在生成:

"created":{"year":2012,"dayOfMonth":30,"dayOfWeek":5,"era":1,"dayOfYear":335,"weekOfWeekyear":48,"weekyear":2012,"monthOfYear":11,"yearOfEra":2012,"yearOfCentury":12,"centuryOfEra":20,"millisOfSecond":39,"millisOfDay":52684039,"secondOfMinute":4,"secondOfDay":52684,"minuteOfHour":38,"minuteOfDay":878,"hourOfDay":14,"millis":1354282684039,"zone":{"uncachedZone":{"cachable":true,"fixed":false,"id":"Europe/Stockholm"},"fixed":false,"id":"Europe/Stockholm"},"chronology":{"zone":{"uncachedZone":{"cachable":true,"fixed":false,"id":"Europe/Stockholm"},"fixed":false,"id":"Europe/Stockholm"}},"afterNow":false,"beforeNow":true,"equalNow":false}
Run Code Online (Sandbox Code Playgroud)

但我希望它和ISO8601日期如2007-11-16T20:14:06.3Z(或带偏移量).

我的猜测是我需要访问ObjectMapper并设置mapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 但是如何在使用时访问ObjectMapper

<mvc:annotation-driven />
Run Code Online (Sandbox Code Playgroud)

PS我使用UserType将对象持久化到PostgreSQL和JPA/Hibernate4以获得JodaTime支持.DS

更新

下面的配置为java.util.Date解决了它,但JodaTime仍然没有骰子.

<annotation-driven>
    <message-converters>
        <beans:bean
            class="org.springframework.http.converter.StringHttpMessageConverter" />
        <beans:bean
            class="org.springframework.http.converter.ResourceHttpMessageConverter" />
        <beans:bean
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <beans:property name="objectMapper">
                <beans:bean
                    class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
                    p:indentOutput="true" p:simpleDateFormat="yyyy-MM-dd'T'HH:mm:ss.SSSZ">
                </beans:bean>
            </beans:property>
        </beans:bean>
    </message-converters>
</annotation-driven>
Run Code Online (Sandbox Code Playgroud)

spring json spring-mvc jodatime jackson

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

使用javascript到第一个字节的时间?

是否有任何现代浏览器通过javascript在http请求中公开时间到第一个字节(TTFB)和/或时间到最后一个字节(TTLB)而不诉诸任何插件?

我想要的是一个javascript片段,可以访问这些值并将它们发回服务器以进行性能监控.

澄清:我不是在寻找任何js计时器或开发人员工具.我想知道并希望是否有任何浏览器测量加载时间并通过javascript公开这些值.

javascript performance

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

在单元测试中操纵当前时间?

有没有办法在jUnit 4.5测试中操纵当前时间?我有以下方法,我想进行单元测试

public String getLastWeek() {
  GregorianCalendar c = new GregorianCalendar(TimeZone.getTimeZone("Europe/Stockholm"));
  c.setFirstDayOfWeek(GregorianCalendar.MONDAY);
  c.add(GregorianCalendar.WEEK_OF_YEAR, -1);
  return c.get(GregorianCalendar.YEAR) + " " + c.get(GregorianCalendar.WEEK_OF_YEAR);
}
Run Code Online (Sandbox Code Playgroud)

使测试更容易的一种方法是将其拆分为两种方法

public String getLastWeek() {
  GregorianCalendar c = new GregorianCalendar(TimeZone.getTimeZone("Europe/Stockholm"));
  return getLastWeekFor(c);
}

public String getLastWeekFor(GregorianCalander c) {
  c.setFirstDayOfWeek(GregorianCalendar.MONDAY);
  c.add(GregorianCalendar.WEEK_OF_YEAR, -1);
  return c.get(GregorianCalendar.YEAR) + " " + c.get(GregorianCalendar.WEEK_OF_YEAR);
}
Run Code Online (Sandbox Code Playgroud)

这让我测试了周减法逻辑,但是让getLastWeek没有经过测试,我更喜欢只有一种方法.

java time junit

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

在保留默认值的同时注册自定义转换服务?

在spring-mvc 3.2.RELEASE项目中,我想使用org.springframework.data.repository.support.DomainClassConverter轻松地为我注入实体.

使用此配置时,它工作正常:

<beans:bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" />

<beans:bean id="conversionService"
    class="org.springframework.core.convert.support.DefaultConversionService" /> 

<beans:bean
    class="org.springframework.data.repository.support.DomainClassConverter">
    <beans:constructor-arg ref="conversionService" />
</beans:bean>

<annotation-driven conversion-service="conversionService" />
Run Code Online (Sandbox Code Playgroud)

但是Spring没有加载格式化程序来处理Joda时间类型,我得到"无法将类型java.lang.String的属性值转换为所需类型org.joda.time.LocalDate for property"

仅使用

<annotation-driven/>
Run Code Online (Sandbox Code Playgroud)

Joda转换有效但不是实体注入.

你怎么连接它,所以两个都工作?

spring spring-mvc

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

Spring Security 3.2.0RC2注销网址仅限POST?

我正在使用javaconfig试验Spring Security 3.2.0.RC2,看来注销网址只是POST.这是设计,是否有任何方法可以使用GET请求注销用户?

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/resources/**", "/signup", "/about", "/password").permitAll()                  
        .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated().and()
        .formLogin()
            .loginPage("/login")
            .permitAll();        
}
Run Code Online (Sandbox Code Playgroud)

spring-security

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