我想互相使用两个 struts taglib,如下所示:
< s:property value="url-< s:property value="number"/>"/>
或者
< s:property value="url-${number}"/>
但我在第二个中收到以下错误:
根据标记文件中的 TLD 或属性指令,属性值不接受任何表达式。
有人有解决方案吗?
谢谢
你也可以使用
<s:property value="'url-'+'%{number}'"/>
Struts 接受 %{yourAttribute} 格式的 OGNL 表达式
如果 " number
" 值是固定的(在 jsp 生成的那一刻;即,它没有在 jsp 中设置,或者在迭代器中更改),您最好将其重构为您的操作中的方法。例如,如果“ number
”是您操作中的一个属性:
public String getUrlWithNumber() {
return "url-" + String.valueOf(getNumber());
}
<s:property value="urlWithNumber"/>
在其他地方你可以尝试一些东西(未经测试)
public String buildUrlWithNumber(int number) {
return "url-" + String.valueOf(number);
}
<s:property value="buildUrlWithNumber(${number})"/>
或类似的东西。
解决方案太简单了!
正如我们的朋友 leonbloy 所说,在迭代器中生成数字时,它现在位于值堆栈中。所以我应该写它的名字:
<s:property value="url-number"/>