Java 尝试计算Struts中的嵌套变量名?
我正在使用struts 2并尝试执行以下操作(基于操作属性和其他变量值创建动态变量名): 定义变量如下:Java 尝试计算Struts中的嵌套变量名?,java,struts2,Java,Struts2,我正在使用struts 2并尝试执行以下操作(基于操作属性和其他变量值创建动态变量名): 定义变量如下: <ps:set name="flag_${_actionProperty}" value="class.property"/> <ps:set name="flag2_%{#flag_${_actionProperty}}_${_actionProperty}" value="class.property2"/> <ps:text name='%{#f
<ps:set name="flag_${_actionProperty}" value="class.property"/>
<ps:set name="flag2_%{#flag_${_actionProperty}}_${_actionProperty}"
value="class.property2"/>
<ps:text name='%{#flag2_${class.property}_${_actionProperty}}'/>
我试图访问flag2的值,如下所示,但它似乎不起作用,因为我知道所有类(模型)属性值和操作属性值都不是空的:
<ps:text name='%{#flag2_%{#flag_${_actionProperty}}_${_actionProperty}}'/>
请告诉我该怎么办。多谢各位
换句话说,根据定义,如何访问依赖于同一范围内另一个变量值的变量值:
这是变量1,它的名称是“flag_”。某个操作属性有一个值,并将在该操作中定义的类属性的值指定为变量,该类属性有一个值
<ps:set name="flag_${_actionProperty}" value="class.property"/>
到现在为止我们都很安全
接下来我需要定义另一个变量flag2,这个变量的名称是动态的,并且取决于变量“flag_key”的值(假设${u actionProperty}在运行时的计算结果为“key”),因此变量1的名称将是flag1_key。第二个定义的变量将是操作“class.property2”中另一个类属性的值,但此变量的名称取决于第一个变量“flag_key”的值
假设class.property的值为“standard”,因此我希望变量2的名称为“flag2_standard_key”,其中“standard”是第一个变量的值,“key”是action属性的值。我需要给第二个变量赋值class.property2“
所以我要做的是访问文本标记中第二个变量的值,我需要计算第一个变量的值以获得第二个变量的名称,然后依次计算第二个变量的值和动态名称以获得class.property2的值
<ps:text name='%{#flag2_%{#flag_${_actionProperty}}_${_actionProperty}}'/>
我知道我在第二个变量的名称中直接使用class属性,如下所示:
<ps:set name="flag_${_actionProperty}" value="class.property"/>
<ps:set name="flag2_%{#flag_${_actionProperty}}_${_actionProperty}"
value="class.property2"/>
<ps:text name='%{#flag2_${class.property}_${_actionProperty}}'/>
我可以这样得到变量2的值。但是如果名称是基于一个独立于操作的值构建的呢?这在某种程度上是可行的吗?Struts标签不允许评估jsp el表达式它允许的,但问题是当我们尝试在一个名称中评估一个变量名时。它不能很好地工作,
ps:
是非标准前缀,可能有不同的自定义实现,当然我没有看到。您应该发布详细信息:\\Use OGNL。您到底想做什么?我正在尝试使用单个JSP文件为视图执行常见的复杂业务功能,该视图将根据加载情况显示两个不同的动态加载表单屏幕和一些参数定义。我通过直接访问action类属性解决了这个问题,如下所示:我可以正确访问它。我仍然相信我第一次使用的示例的有效性,我需要动态构建我正在设置的变量名,这是一个有效的场景,请尝试理解它。