我的应用程序允许用户在任何给定的时刻更改语言,这会给我带来一些麻烦.例如,如果用户通过URL指定页面:/category/8?page=3然后尝试更改语言?language=en将删除以前的参数并将他带到第一页.
如何获取当前URL并向其添加其他参数?我希望实现这样的目标:/category/8?page=3&language=en当前ULR /category/8?page=3和用户尝试更改语言时.
我尝试使用,${pageContext.request.requestURL}但这不是我寻找的,因为它返回jsp页面.
在我的应用程序中,我已安排监视目录以查找具有特定扩展名的文件的任务.这些文件将被进一步处理.可以有多个进程执行此应用程序并防止多个实例处理相同的文件我更改其扩展名,因此未使用Files.movewith ATOMIC_MOVE选项列出其他时间.有可能不止一个app实例同时尝试执行此方法 - 我的问题是:接下来会发生什么?我应该期待抛出一些异常吗?
为了克服 LazyInitializationException 我决定使用 OpenEntityManagerInViewFilter 但我无法做到注释样式。我试过用两种方式设置它:
首先在 WebApplicationInitializer 的 onStartup 方法中:
OpenEntityManagerInViewFilter entityManagerInViewFilter = new OpenEntityManagerInViewFilter();
entityManagerInViewFilter.setEntityManagerFactoryBeanName("entityManagerFactory");
entityManagerInViewFilter.setPersistenceUnitName("defaultPersistenceUnit");
FilterRegistration.Dynamic filter = sc.addFilter("openEntityManagerInViewFilter", entityManagerInViewFilter);
filter.addMappingForUrlPatterns(null, false, "/*");
Run Code Online (Sandbox Code Playgroud)
其次,通过创建扩展 OpenEntityManagerInViewFilter 并具有 @WebFilter 注释的新类:
@WebFilter(urlPatterns = {"/*"})
public class MainFilter extends OpenEntityManagerInViewFilter {
public MainFilter() {
setEntityManagerFactoryBeanName("entityManagerFactory");
setPersistenceUnitName("defaultPersistanceUnit");
}
}
Run Code Online (Sandbox Code Playgroud)
每次我得到“没有定义名为 'entityManagerFactory' 的 bean”或“没有定义类型 [javax.persistence.EntityManagerFactory] 的合格 bean”时。我的实体管理器工厂是在 @Configuration 类中定义的。
如何在没有 web.xml 文件的情况下配置此过滤器?