我有这个代码遍历某个对象集合,我想对每个元素执行类型检查(或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>
答案 0 :(得分:0)
实现if循环功能的更好方法是在Action层上编写一个返回字符串值(类名称)的公共函数,并将Question类型作为参数。一些相关的例子可能是这样的
public String getClassName(Ouestion question){
if(question instanceof SomeDerivedQuestion){
return "someDerivedQuestion";
}
//other code comes below
}
现在在JSP中你可以做这样的事情
<s:if test="%{getClassName(myQuestions[#key.index]).equals('someDerivedQuestion')}>
THIS IS A DERIVED QUESTION.
</s:if>
最好处理JSP以处理应用程序的表示部分,并在Java服务器端覆盖所需的编码