我有一个Liferay预定作业,应根据某些规则创建新AssetCategories
。但我总是得到AssetCategoryNameException
。我的新类别的名称/标题中只有字母,空格和括号,我在现有的类别名称中使用了所有这些。我也尝试用英文字母的常量字符串,结果相同。这个例外可能是什么原因?
我的代码如下所示:
AssetCategoryLocalServiceUtil.addCategory(userId, 0, titleMap, null,
myVocabulary.getVocabularyId(), null, serviceContext);
userId
是随机管理员用户的ID,因为它是预定作业,并且没有“登录”用户。titleMap
使用以下代码创建:HashMap<Locale, String> titleMap = new HashMap<Locale, String>(); titleMap.put(myLocale, name);
serviceContext
是一个新的ServiceContext
对象还有一件事,我如何使用此方法的categoryProperties
属性(问题解决后)?它是String[]
,但属性是键值对。
答案 0 :(得分:0)
以下是AssetCategoryName的无效字符
public static char[] INVALID_CHARACTERS = new char[] {
CharPool.AMPERSAND, CharPool.APOSTROPHE, CharPool.AT,
CharPool.BACK_SLASH, CharPool.CLOSE_BRACKET, CharPool.CLOSE_CURLY_BRACE,
CharPool.COLON, CharPool.COMMA, CharPool.EQUAL, CharPool.GREATER_THAN,
CharPool.FORWARD_SLASH, CharPool.LESS_THAN, CharPool.NEW_LINE,
CharPool.OPEN_BRACKET, CharPool.OPEN_CURLY_BRACE, CharPool.PERCENT,
CharPool.PIPE, CharPool.PLUS, CharPool.POUND, CharPool.QUESTION,
CharPool.QUOTE, CharPool.RETURN, CharPool.SEMICOLON, CharPool.SLASH,
CharPool.STAR, CharPool.TILDE
};
确保您的类别名称不具有任何这些字符。
答案 1 :(得分:0)
好的,我找到了解决方案。问题是由区域设置引起的。 AssetCategory
具有名称和本地化标题,addAssetCategory
方法使用默认语言环境中的标题作为名称。但在我的情况下,默认语言环境为en_US
,而我只在hu_HU
中添加titleMap
标题。因此,默认语言环境的标题为null,这导致了异常(注意:a NullPointerException
会提供更多信息......)。所以我将默认语言环境更改为我的语言环境,代码可以运行。