0

我想互相使用两个 struts taglib,如下所示:

< s:property value="url-< s:property value="number"/>"/>

或者

< s:property value="url-${number}"/>

但我在第二个中收到以下错误:

根据标记文件中的 TLD 或属性指令,属性值不接受任何表达式。

有人有解决方案吗?

谢谢

4

3 回答 3

2

你也可以使用

<s:property value="'url-'+'%{number}'"/>

Struts 接受 %{yourAttribute} 格式的 OGNL 表达式

于 2011-04-10T06:59:33.607 回答
0

如果 " 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})"/>

或类似的东西。

于 2010-05-24T17:57:55.697 回答
0

解决方案太简单了!

正如我们的朋友 leonbloy 所说,在迭代器中生成数字时,它现在位于值堆栈中。所以我应该写它的名字:

<s:property value="url-number"/>
于 2010-05-24T20:32:07.300 回答