- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在我的 java 配置中将消息源定义为:
@Bean(name = "messageSource")
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames(
"/i18n/ir/kia/industry/webapp/entity",
"/i18n/ir/kia/industry/webapp/formErrors",
"/i18n/ir/kia/industry/webapp/frontend",
"/i18n/ir/kia/industry/webapp/frontendPages");
return messageSource;
}
它在使用网站和消息正确显示时工作正常,但在尝试编写 spring 测试时:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class, SpringMVC.class})
@WebAppConfiguration
public abstract class AbstractTestClass {
protected MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
}
和一个简单扩展它的测试类,我得到错误 Can't find bundle for base name/i18n/ir/kia/industry/webapp/entity
。
在启动 tomcat 和在 jsp 文件中使用消息源时它工作正常,但在测试时没有运气。我曾尝试将 i18n 文件夹移动到 WEB-INF 下,但它也无济于事。
目标文件夹看起来像这样,请不要告诉我将 i18n 文件夹添加到目标资源...
最佳答案
我设法通过使用 spring 配置文件功能删除消息源基本名称来解决问题。我将消息源部分更改为:
@Bean(name = "messageSource")
@Profile(value = {"dev","prod"})
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames(
"/i18n/ir/kia/industry/webapp/entity",
"/i18n/ir/kia/industry/webapp/formErrors",
"/i18n/ir/kia/industry/webapp/frontend",
"/i18n/ir/kia/industry/webapp/frontendPages");
messageSource.setCacheSeconds(5);
return messageSource;
}
@Bean(name = "messageSource")
@Profile("test")
public MessageSource testMessageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
return messageSource;
}
并将测试配置文件添加到我的测试单元
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class, SpringMVC.class})
@WebAppConfiguration
@ActiveProfiles("test")
public abstract class AbstractTestClass {
当我能够运行我的测试时,但这是解决问题的一种方法。我仍然对首先出现错误的原因感到困惑。那是某种错误吗?还是我做错了什么?
关于java - 测试时使用 spring messagesource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558658/
我有一个网络应用程序,我在其中定义了基本的 dispatcher-servlet web.xml 上下文并加载了 applicationContext。 我在 dispatcher-servlet 中
我有代码: messageSource.getMessage("some.key",new Object[]{30,31},Constants.LOCALE) 并在属性文件中键入: some.key=
这个问题在这里已经有了答案: Grails: How to access i18n from controller or service? (7 个回答) 6年前关闭。 我正在使用 grails 2,
我正在尝试在 Spring 中使用 MessageSource 注入(inject)文本消息。我写的程序编译得很好,但它总是打印出默认消息,而不是从 .properties 文件中获取正确的值。我一点
我已经检查过大多数类似的问题,但找不到有用的答案。 我正在使用 Maven v3.3.9 通过 JHipster 创建一个 WebApplication。除其他事项外,还发生了 PDF 生成。该网络应
我正在尝试使用发送邮件任务在成功完成数据流任务后发送消息。 执行包时,产生错误: Error: Failed to lock variable "The extraction was successf
我有以下情况:我从移动设备获取区域设置列表,我需要检查我的 MessageSource 是否与传递的列表匹配。因此,默认情况下,我可以按一种区域设置进行检查,如果 spring 找不到匹配项,它将使用
如果我将最后一个放在 Controller 之外但放在这样的服务内,我会遇到使用 MessageSource 读取属性的问题: @Service public class MessageHandler
我做了一些谷歌搜索,发现我的问题出现了很多次,但我已经尝试了所有建议的解决方案,但它仍然不适合我 我一直收到这个异常: org.springframework.context.NoSuchMessag
我想从属性文件中检索值,但 ApplicationContext 找不到该文件,我不知道为什么。查看我的代码和屏幕截图: spring_part22.xml:
org.springframework.boot spring-boot-starter-parent 1.5.9.RELEASE 在一些spring boot应用中,使用
我正在使用 Hibernate Validator 和 MessageSource 来本地化违规消息。 class FooValidator implements ConstraintValidato
我目前正在开发一个 Spring 项目,并希望将我的 messages.properties 链接到 @Bean 中以启用 UTF-8 编码。 这是我的项目结构: 这是 ServletInitiali
我无法在我的表单支持对象的 Spring 验证期间使用 messages.properties 中的消息。 应用程序配置文件: WEB-INF/classes/messages.proper
我在我的 java 配置中将消息源定义为: @Bean(name = "messageSource") public MessageSource messageSource() { Resou
我正在使用 Spring 框架为我们的基于 Web 的应用程序设计一个插件系统。插件是类路径上的 jar。这样我就可以得到jsp之类的源码了,见下文 ResourcePatternResolver r
我正在尝试运行一个简单的 Spring 应用程序,但出现以下异常: javax.servlet.ServletException: javax.servlet.jsp.JspTagException:
我们正在使用 Spring MessageSource 在我们的应用程序中构建错误消息。 我们像这样填充错误消息 dobInvalid = The DOB supplied {0} is invali
我正在使用 Spring 4 并使用 MessageSource 进行本地化。 我的 xml 文件有: 本地化文件之一 myfile_nl.properties 具有: prop1
我有一个 Controller ,它显示表单并从属性文件加载消息。我扩展了 ReloadableResourceBundleMessageSource 并将其命名为 DatabaseMessageSo
我是一名优秀的程序员,十分优秀!