是否可以使用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计算它们.可能吗?也欢迎替代解决方案.
我正在使用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) 我想知道在使用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时,我当前必须重新编号所有索引,这是我想避免的部分,是否可能?
我正在使用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) 是否有任何现代浏览器通过javascript在http请求中公开时间到第一个字节(TTFB)和/或时间到最后一个字节(TTLB)而不诉诸任何插件?
我想要的是一个javascript片段,可以访问这些值并将它们发回服务器以进行性能监控.
澄清:我不是在寻找任何js计时器或开发人员工具.我想知道并希望是否有任何浏览器测量加载时间并通过javascript公开这些值.
有没有办法在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没有经过测试,我更喜欢只有一种方法.
在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转换有效但不是实体注入.
你怎么连接它,所以两个都工作?
我正在使用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 ×6
java ×5
spring-mvc ×4
jackson ×1
javascript ×1
jodatime ×1
jpa ×1
json ×1
jsonpath ×1
junit ×1
performance ×1
testing ×1
time ×1