我正在尝试在自定义Struts标记内使用变量,如下所示 -
for(String currentMacro : (List<String>)(request.getAttribute("individualMacros"))) {
name = currentMacro.<some-operation>
<html:mce name = "hmtl_<%= name %>" />
像这样的东西。但是&lt;%= name%&gt;不会被变量值替换。当我使用带有纯HTML标记的变量时,它可以工作。
在这种情况下,有没有办法实现这个目标?
感谢。
答案 0 :(得分:1)
使用JSP EL(假设使用JSP 2.0,并将“name”放入范围)。您还可以查看TLD是否允许rtexprs。
<html:mce name="html_${name}"/>
但为什么要使用scriptlets?很少(永远?)一个很好的理由。
答案 1 :(得分:0)
由于我们正在使用自定义标记,我的猜测是在TLD文件中,对于该特定标记属性,rtexprvalue
选项没有设置为true:
<attribute>
<name>name</name>
<rtexprvalue>true</rtexprvalue>
.......
</attribute>
rtexprvalue
指定可以在运行时动态评估属性值。
如果设置为“false”,则表示该属性具有静态值,该值在translation处评估;如果设置为“true”,则表示可以在运行时动态确定该值。默认为“false”。
如果scriptlet不起作用,则很可能意味着rtexprvalue
为false。如果你没有自由改变它,那么表达式将不适用于该特定属性。