一尘不染

OGNL语法问题

jsp

我有一个带有以下代码段的Struts 2 JSP页面:

<s:property value="%{myVariable}" />

正确打印出的值myVariable

现在,我想myVariable在我的操作中传递一种方法,该方法根据的值计算结果myVariable。我尝试了以下方法:

<s:property value="%{myMethod(myVariable)}" />

第一行myMethod打印出一条调试语句。使用上面的代码片段,此调试语句未打印。

然后我尝试了这个:

<s:property value="%{myMethod(#myVariable)}" />

我的调试语句已打印,但是myVariable即使通过打印时,它的值也被传递为null<s:property value="%{myVariable}" />

将页面变量传递给Struts 2方法的正确语法是什么?


阅读 237

收藏
2020-06-08

共1个答案

一尘不染

<s:property value="%{myMethod(myVariable)}" />

是正确的语法,但要获取具有签名的方法的值

public String myMethod(String value){
  return value;
}

需要吸气剂 myVariable

public String getMyVariable() {
  return myVariable;
}

如果您将值设置为myVariablelike

private String myVariable = "myValue";

然后应在JSP中打印。如果参数为其他类型,则将其转换String为该方法并将调用该方法。

2020-06-08