[
https://issues.apache.org/jira/browse/WW-5437?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Sielaff updated WW-5437:
-------------------------------
Description:
According to the documentation at
[https://struts.apache.org/core-developers/constant-configuration] it should be
possible to use both system and environment variables in the constants section.
Currently environment variables are ignored if a default value is defined.
The sysStrSubstitutor has a less specific prefix which also includes and
replaces those, which should be passed to the envStrSubstitutor later.
Given
System.getenv('STRUTS_DEV_MODE') is "true"
{code:java}
<constant name="struts.devMode" value="${env.STRUTS_DEV_MODE:false}"/>
{code}
The code:
{code:java}
String substituted = sysStrSubstitutor.replace(value);
return envStrSubstitutor.replace(substituted);{{}}{code}
The sysStrSubstitutor checks, if there is a system property with the key
"env.STRUTS_DEV_MODE" which is unset. It then replaces the expression with its
default. substituted is "false" now. Afterwards the envStrSubstitutor doesn't
find any expression to substitute, because the string is "false".
was:
According to the documentation at
[https://struts.apache.org/core-developers/constant-configuration] it should be
possible to use both system and environment variables in the constants section.
Currently environment variables are ignored if a default value is defined.
The sysStrSubstitutor has a less specific prefix which also includes and
replaces those, which should be passed to the envStrSubstitutor later.
Given
{{<constant name="struts.devMode" value="${env.STRUTS_DEV_MODE:false}"/>}}
and System.getenv('STRUTS_DEV_MODE') is "true"
The code:
String substituted = sysStrSubstitutor.replace(value);
return envStrSubstitutor.replace(substituted);{{}}
The sysStrSubstitutor checks, if there is a system property with the key
"env.STRUTS_DEV_MODE" which is unset. It then replaces the expression with its
default. substituted is "false" now. Afterwards the envStrSubstitutor doesn't
find any expression to substitute, because the string is "false".
> EnvsValueSubstitutor ignores Environment variables if default value is present
> ------------------------------------------------------------------------------
>
> Key: WW-5437
> URL: https://issues.apache.org/jira/browse/WW-5437
> Project: Struts 2
> Issue Type: Bug
> Components: XML Configuration
> Affects Versions: 6.4.0
> Reporter: Stefan Sielaff
> Priority: Major
>
> According to the documentation at
> [https://struts.apache.org/core-developers/constant-configuration] it should
> be possible to use both system and environment variables in the constants
> section. Currently environment variables are ignored if a default value is
> defined.
> The sysStrSubstitutor has a less specific prefix which also includes and
> replaces those, which should be passed to the envStrSubstitutor later.
> Given
> System.getenv('STRUTS_DEV_MODE') is "true"
> {code:java}
> <constant name="struts.devMode" value="${env.STRUTS_DEV_MODE:false}"/>
> {code}
> The code:
> {code:java}
> String substituted = sysStrSubstitutor.replace(value);
> return envStrSubstitutor.replace(substituted);{{}}{code}
> The sysStrSubstitutor checks, if there is a system property with the key
> "env.STRUTS_DEV_MODE" which is unset. It then replaces the expression with
> its default. substituted is "false" now. Afterwards the envStrSubstitutor
> doesn't find any expression to substitute, because the string is "false".
--
This message was sent by Atlassian Jira
(v8.20.10#820010)