-1

我有这段代码遍历某个对象集合,我想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>
4

1 回答 1

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 服务器端所需的编码

于 2013-03-27T09:31:39.310 回答