博文

目前显示的是 2017的博文

利用AJAX和history.replaceState无刷新的改变页面URL

图片
  在以往我们需要改变URL的参数时,我会通过修改  window.location.search  来实现。但这必然会导致页面的再次刷新,这不是我们想看到的结果。 最近我的项目中由于一个基础库的bug(短时间内还没办法去修改(〃>皿<))必须通过修改url参数来实现一些功能,需要增加的参数存储在  sessionStorage.dataSearch  中,具体代码如下: if(location.search.length == 0) { if(history.replaceState) { history.replaceState(null,null,sessionStorage.dataSearch); } else { location.search = sessionStorage.dataSearch; } }   说到这个  history.replaceState  我们就不得不提  history.pushStat  和  history.replaceState  这些API了。 API的使用    pushState  是将指定的URL添加到浏览器历史里,  replaceState  是将指定的URL替换当前的URL。 var state = { title: title, url: options.url, otherkey: othervalue }; window.history.pushState(state, document.title, url); 响应浏览器的前进、后退操作    window  对象上提供了  onpopstate  事件,上面传递的  state  对象会成为  event  的子对象,这样就可以拿到存储的title和URL了。 window.addEventListener('popstate', function(e){ ...

Spring MVC中Hibernate-validator的使用

  当我们在写具体业务功能的时候,入参校验是不可或缺的一部分,所以我们的项目逻辑中就会存在大量书写  null!=object  的情况。   为了能够优雅的解决这个问题,我们在项目选择引入 Hibernate Validator   来执行常见的参数校验,而一些含有逻辑的,比如根据用户ID确认人员是否存在只能靠我们自己逻辑去判断了。 一、验证器的引入与配置   在Spring MVC中,任何支持JSR-303,JSR-349的validator都能够通过简单的配置引入,我们只要引入POM并设置好配置项就可以。 <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-validator</artifactid> <version>5.4.1.Final</version> </dependency>   我们使用的是其相关简化的配置,没有配置具体的提示语,只要能把具体的参数问题抛出就可以了,毕竟是面向开发的一个项目,没必要做得这么人性化: <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> </bean> <bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"> <property name="validator" ref="validator" /> </bean>   当然如果有国际化的需要的,可以增加如下的语言配置...