Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
Cannot retrieve group scoped configuration data
Hi,
I've created a configuration interface with group scope in Liferay 7.4 dxp, following the documentation here: https://help.liferay.com/hc/en-us/articles/360028726152-Scoping-Configurations.
The configuration form shows up in the site settings, and if I change a value it is saved. But when I retrieve the value in the portlet it's empty. Below are the relevant code snippets:
Configuration interface:
@ExtendedObjectClassDefinition(category = "NASA", scope =
ExtendedObjectClassDefinition.Scope.GROUP)
@Meta.OCD(
id =
"gov.nasa.hq.mailerform.internal.configuration.MailerFormGroupConfiguration",
localization = "content/Language",
name
= "MailerForm Configuration")
public interface
MailerFormGroupConfiguration {
@Meta.AD(
required = false,
name
= "antiSamyPolicyFile",
description =
"AntiSamy policy file",
deflt =
"antisamy-slashdot.xml")
public String antiSamyPolicyFile();
@Meta.AD(
required = false,
name
= "antiSamyPolicyDirectory",
deflt =
"/app/liferay/data/portlet_properties/antisamy")
public String antiSamyPolicyDirectory();
}
Registering the configuration:
public class MailerFormGroupConfigurationBeanDeclaration implements ConfigurationBeanDeclaration {
@Override
public Class<?>
getConfigurationBeanClass() {
return
MailerFormGroupConfiguration.class;
}
}
Portlet code:
@Component(
configurationPid =
"gov.nasa.hq.mailerform.internal.configuration.MailerFormGroupConfiguration",
property = {
"com.liferay.portlet.display-category=NASA",
"com.liferay.portlet.header-portlet-css=/css/styles.css",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=MailerForm",
"javax.portlet.init-param.template-path=/",
"javax.portlet.init-param.view-template=/view.jsp",
"javax.portlet.init-param.error-template=/errorPage.jsp",
"javax.portlet.init-param.config-template=/admin/configuration.jsp",
"javax.portlet.name=" +
MailerFormPortletKeys.MAILERFORM,
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.security-role-ref=power-user,user"
},
service = Portlet.class)
// Declare class scope ConfigurationProvider
private ConfigurationProvider _configurationProvider;
// Get a reference to ConfigurationProvider
@Reference(unbind = "-")
protected void
setConfigurationProvider(ConfigurationProvider configurationProvider)
{
_configurationProvider = configurationProvider;
}
// Try reading from the configuration
try {
MailerFormGroupConfiguration
configuration = _configurationProvider
.getGroupConfiguration(MailerFormGroupConfiguration.class,
scopeGroupId);
_log.info(ID + "antiSamyPolicyFile
= " + configuration.antiSamyPolicyFile());
} catch
(ConfigurationException e2) {
// TODO Auto-generated
catch block
e2.printStackTrace();
}
When I print the value of "antiSamyPolicyFile" from the configuration it is empty:
2023-09-08 15:59:50.933 INFO [http-nio-8080-exec-2][MailerForm:196]
doView: antiSamyPolicyFile =
Powered by Liferay™