【问题标题】:DIsplay attribute of an object in jsp with Struts使用Struts在jsp中显示对象的属性
【发布时间】:2016-08-27 08:15:25
【问题描述】:

所以我有这些课程:

public class DeviceDto {
  private long number;
  private long blob;

  //getters setters

}

public class PageDto {
  private DeviceDto pda;
  private DeviceDto tab;
  private String message;

  //getters setters
}

在我的操作中,我创建了一个 pageDto,然后设置它:

request.setAttribute("dto", pageDto);

然后在我的jsp中:

<bean:write name="dto" property="message" />
<bean:write name="dto" property="pda.id" />
<bean:write name="dto" property="tab.id" />

但是pda.idtab.id 不显示任何内容。 我也试过${tab.id} bit 这会引发一个异常,说没有getter。

有什么想法吗?

【问题讨论】:

    标签: java jsp jstl struts struts-1


    【解决方案1】:

    您不能以这种方式使用&lt;bean:write&gt; 标签。您可以使用等效的 JSTL 标记 &lt;c:out&gt;,而不是 &lt;bean:write&gt;

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    ...
    <c:out value="${dto.message}" />
    <c:out value="${dto.pda.id}" />
    <c:out value="${dto.tab.id}" />
    

    【讨论】:

    • 它只是显示 ${dto.tab.id},我添加了 jstl 1.1.2 和标准 1.1.2 jar,并且我的 2.3 servlet 的 web.xml 声明如 stackoverflow.com/tags/jstl/info
    • 不要使用 2.3,至少 2.4。
    【解决方案2】:

    @Roman C awnser 很好,但我找到了一种使用 bean:write 的方法,所以我也发布了它。

    使用bean define将dto的一个proberty定义为bean,然后可以使用bean:write。

    <bean:define name="dto" property="pda" id="pdadto" />
    <bean:write name="pdadto" property="id" />
    

    这将写成dto.pda.id

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多