Java 相互使用两个struts2标记库
我想在彼此中使用两个struts taglib,如下所示:Java 相互使用两个struts2标记库,java,struts2,taglib,Java,Struts2,Taglib,我想在彼此中使用两个struts taglib,如下所示: < s:property value="url-< s:property value="number"/>"/> 或 但我在第二个错误中得到了以下错误: 根据标记文件中的TLD或属性指令,属性值不接受任何表达式 有人有办法吗 谢谢如果“number”值是固定的(在生成jsp时;即,它没有在jsp中设置,也没有在迭代器中更改),那么最好在操作中将其重构为方法。例如,如果“编号”是操作中的属性: pub
< s:property value="url-< s:property value="number"/>"/>
”/>
或
但我在第二个错误中得到了以下错误:
根据标记文件中的TLD或属性指令,属性值不接受任何表达式
有人有办法吗
谢谢如果“number
”值是固定的(在生成jsp时;即,它没有在jsp中设置,也没有在迭代器中更改),那么最好在操作中将其重构为方法。例如,如果“编号
”是操作中的属性:
public String getUrlWithNumber() {
return "url-" + String.valueOf(getNumber());
}
<s:property value="urlWithNumber"/>
公共字符串getUrlWithNumber(){
返回“url-”+String.valueOf(getNumber());
}
在其他地方,您可以尝试(未经测试)
公共字符串buildUrlWithNumber(整数){
返回“url-”+String.valueOf(number);
}
或者类似的东西。解决方案太简单了 正如我们的朋友leonbloy所说,当数字在迭代器中生成时,它现在就在值堆栈中。 所以我应该写下它的名字:
<s:property value="url-number"/>
您也可以使用
<s:property value="'url-'+'%{number}'"/>
Struts接受格式为%{yourtattribute}的OGNL表达式您键入的是“properties”而不是“property”,对吗?不幸的是,这个数字是在迭代器中生成的。当我使用第二种解决方案时(正如我在问题中所写的),我得到了一个错误:“根据标记文件中的TLD或属性指令,属性值不接受任何表达式。”啊,OGNL是一种痛苦。。。您在值堆栈中有可用的“数字”,以便
输出它?然后,您可以尝试使用
(或者#number,我不记得了)
<s:property value="url-number"/>
<s:property value="'url-'+'%{number}'"/>