單一 List 中包含不同類型的 POJO(如 Feng、FengFeng),需在 JSP 中區分類型並顯示對應屬性。
public class Feng { private String lou, feng; /* getter/setter */ }
public class FengFeng { private String a, b; /* getter/setter */ }
private List<Object> li; // 使用 Object 或共同父介面
public String execute() {
li = new ArrayList<>();
li.add(new Feng("lou", "feng"));
li.add(new Feng("lou1", "feng1"));
li.add(new FengFeng("a", "b"));
li.add(new FengFeng("a1", "b2"));
return SUCCESS;
}
<s:iterator value="li">
<s:if test="feng != null">
<s:property value="feng"/>!!<s:property value="lou"/>
</s:if>
<s:if test="a != null">
<s:property value="a"/>!!<s:property value="b"/>
</s:if>
</s:iterator>
feng!!lou feng1!!lou1 a!!b a1!!b2
feng != null 嘗試獲取當前迭代物件的 feng 屬性;若物件無此屬性則返回 false(不拋異常)。a != null 篩選 FengFeng 實例。Displayable),Action 返回 List<Displayable>,編譯期更安全。instanceof 邏輯移至 Action 或自定義標籤,保持 JSP 簡潔。<s:append> 合併多個同類型列表再迭代。