【发布时间】:2013-03-27 08:33:28
【问题描述】:
我有这段代码遍历某个对象集合,我想对每个元素执行类型检查(或instanceof)运算符。但是在我的<s:if> 上,它似乎没有进行评估。我错过了什么?
<s:iterator value = "myQuestions" var = "q" status="key">
<s:checkbox name="myQuestions[%{#key.index}].chosen" />
<s:property value = "%{myQuestions[#key.index].question}"/>
<s:if test ="%{myQuestions[#key.index].getClass().simpleName} == 'Question'" >
THIS IS A QUESTION.
</s:if>
</s:iterator>
【问题讨论】:
-
您在应用服务器中运行的是哪个 Java 版本?根据 API,
getSimpleName需要 Java 1.5 或更高版本 -
我会强烈建议不要使用类类型作为视图层功能开关。当然,您可以以一种更清洁、更不脆弱的方式来做到这一点。
-
@DaveNewton 你有什么想法?
-
@user962206 不知道更多,我不知道。在一个列表中存储不同的对象类型通常是一种气味。你和他们有什么区别?答案?一个问题应该有答案——一个数据结构。
标签: jsp if-statement struts2 iterator ognl