在彼此中使用两个struts2 taglib

时间:2010-05-24 14:47:48

标签: java struts2 taglib

我想在彼此中使用两个struts taglib,如下所示:

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

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

但是我在第二个错误中遇到了以下错误:

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

有人有解决方案吗?

由于

3 个答案:

答案 0 :(得分:2)

您也可以使用

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

Struts接受格式为%{yourAttribute}

的OGNL表达式

答案 1 :(得分: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})"/>

或类似的东西。

答案 2 :(得分:0)

解决方案太简单了!

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

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