在我的 jsp 文件中,我设置了变量 statusNum 的值。当我尝试将 statusNum
的值传递给方法 getStatusString()
(此方法在 Action 类中定义)时,statusNum
的值一片空白。但是当我使用 ${statusNum}
显示时,我得到了值。这是我的代码。
<table style="width: 100%;">
<s:iterator value="emailList">
<tr>
<td style="width:39%"><s:property value='name'/></td>
<td style="width:39%;"><s:property value='email'/></td>
<s:set var="statusNum"><s:property value="status"/></s:set>
${statusNum}
<s:set var="stringNum" value="%{getStatusString(#statusNum)}"/>
</tr>
</s:iterator>
</table>
这是 Action 类中 getStatusString() 方法的框架
public String getStatusString(Integer sendStatus) {
-------------
------------- //code returning string value
-------------
}
请帮我通过getStatusString()
方法获取statusNum
对应的status String值。
最佳答案
您应该尝试使用 <s:property value="%{getStatusString(#statusNum)}"/>
标记以便调用操作方法。
Anwyay...在我看来这不是一个好的选择...为什么应该在 jsp 中调用操作方法并将业务层与表示层混合在一起?
更容易移动 Controller 内的所有内容并使用 jsp 来呈现结果。
我的意思是...您将单个操作分为两个不同的阶段。您的操作正在创建 Collection
叫emailList
然后你在 jsp 中迭代你的集合。当您迭代时,您调用一个方法来获取状态字符串。
工作流程:操作 -> jsp -> 迭代 -> {method x n} -> 结果
<小时/>为什么不在操作中准备状态字符串?通过这种方式,您将只打印该值,并且您的堆栈不会充满“垃圾”(如果我们可以这么说)。
<小时/>工作流程:操作 -> jsp -> 迭代 -> 结果
<小时/><table style="width: 100%;">
<s:iterator value="emailList">
<tr>
<td style="width:39%"><s:property value='name'/></td>
<td style="width:39%;"><s:property value='email'/></td>
<td style="width:39%;"><s:property value='statusString'/></td>
</tr>
</s:iterator>
</table>
如果该字符串可能会随着时间的推移而改变,则使用 Ajax。为了让您的页面始终保持刷新并且以更安全的方式。
关于java - 当值传递给 Action 类方法时,变量值被视为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34262092/