Struts2消息资源文件:具有相同子字符串的键

时间:2013-12-12 22:39:30

标签: properties struts2 key substring resourcebundle

ArticleDto.java

public class ArticleDto {   
    ...
    private CategoryDto categoryDto;
    ...
}

CategoryDto.java

public class CategoryDto {  
    ...
    private Long id;
    ...
}

global_en.properties

...
categoryDto.id=ID
...

...
articleDto.categoryDto.id=Category
...

new_article.jsp

<s:form action="addArticle">
    <s:select key="articleDto.categoryDto.id" />
    <s:textfield key="articleDto.title" />
    <s:submit />
</s:form>

在生成的HTML中,我得到了“articleDto.categoryDto.id”的错误标签。 我得到“ID”而不是所需的“类别”。

我似乎关键的“articleDto.categoryDto.id”它首先匹配subString“categoryDto.id”。

如果从.properties文件中删除“categoryDto.id = ID”条目,则会获得相应的值“类别”。

不应该是“articleDto.categoryDto.id”更高优先级而不是“categoryDto.id”?

1 个答案:

答案 0 :(得分:0)

我解决了在global_en.properties中所有条目的开头添加“bundle”的问题:

...
bundle.categoryDto.id=ID
...

...
bundle.articleDto.categoryDto.id=Category
...

而不是形式:

    <s:select name="bundle.articleDto.categoryDto.id" />

解决了,但仍然不知道为什么struts2无法识别以前的解决方案。 问题出在getText()中。它在包含操作变量的值堆栈中搜索。在行动中我有一个文章Dto,有吸气剂和二传手。 如果我取下吸气剂,一切都很顺利。这个吸气器似乎发生了一些奇怪的冲突。