web-dev-qa-db-ja.com

JSP / JSTLでBeanのすべてのフィールド/プロパティを表示する

私は豆を持っています、${product}。このBeanで利用可能なすべてのフィールド/プロパティを表示したいと思います。したがって、たとえば、${product.price}${product.name}${product.attributes.colour}など.

JSTL/ELを使用して、JSPでこれらのプロパティのすべての名前と値を動的に印刷することは可能ですか?

何かのようなもの:

<c:forEach items="${product}" var="p">  
    ${p.key} - ${p.value}
</c:forEach>
26
Toby

オブジェクトをBeanに置き換えて決定します。

<c:set var="object" value="${product}" />

宣言されたすべてのフィールドとその値を表示します。

<c:if test="${not empty object['class'].declaredFields}">
    <h2>Declared fields <em>&dollar;{object.name}</em></h2>
    <ul>
        <c:forEach var="field" items="${object['class'].declaredFields}">
            <c:catch><li><span style="font-weight: bold">
                ${field.name}: </span>${object[field.name]}</li>
            </c:catch>
        </c:forEach>
    </ul>
</c:if>

宣言されたすべてのメソッドを表示します。

<c:if test="${not empty object['class'].declaredMethods}">
    <h2>Declared methods<em>&lt;% object.getName() %&gt;</em></h2>
    <ul>
        <c:forEach var="method" items="${object['class'].declaredMethods}">
            <c:catch><li>${method.name}</li></c:catch>
        </c:forEach>
    </ul>
</c:if>
38
Toby

@Tobyの回答のバージョンを使用する準備ができました

<p class="TODO <your name> PRINT OBJECT PROPERTIES">
    <c:set var="object" value="${<your object here>}" />
    <h2><b>Object:&nbsp; ${object.class} </b></h2>
    <h3><b>Declared fields</b></h3>
    <c:if test="${!empty object.class.declaredFields}">
        <ul>
            <c:forEach var="attr" items="${object.class.declaredFields}">
                <c:catch><li><b>${attr.name}</b>:&nbsp; ${object[attr.name]}</li></c:catch>
            </c:forEach>
        </ul>
    </c:if>
    <c:if test="${empty object.class.declaredFields}">No declared fields</c:if>
    <h3><b>Declared methods</b></h3>
    <c:if test="${!empty object.class.declaredMethods}">
        <ul>
            <c:forEach var="attr" items="${object.class.declaredMethods}">
                <c:catch><li><b>${attr.name}</b>(...)</li></c:catch>
            </c:forEach>
        </ul>
    </c:if>
    <c:if test="${empty object.class.declaredMethods}">No declared methods</c:if>
</p>
3
honzajde