Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSP/JSTL中查看bean的所有字段/属性_Jsp_Properties_Jstl_Javabeans - Fatal编程技术网

在JSP/JSTL中查看bean的所有字段/属性

在JSP/JSTL中查看bean的所有字段/属性,jsp,properties,jstl,javabeans,Jsp,Properties,Jstl,Javabeans,我有一个bean,${product}。我想查看这个bean的所有可用字段/属性。例如,${product.price},${product.name},${product.attributes.color}等等 是否可以使用JSTL/EL在JSP中动态打印出这些属性的所有名称和值 比如: <c:forEach items="${product}" var="p"> ${p.key} - ${p.value} </c:forEach> ${p.key}-$

我有一个bean,
${product}
。我想查看这个bean的所有可用字段/属性。例如,
${product.price}
${product.name}
${product.attributes.color}
等等

是否可以使用JSTL/EL在JSP中动态打印出这些属性的所有名称和值

比如:

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

${p.key}-${p.value}

没有所谓的JSTL对象。JSTL只是提供了以更干净、更可读的方式访问JSP中java对象的方法(另一种方式是scriplet)。只需在java对象中实现toString(这里是说明toString方法简介的链接,在本例中为产品,现在为产品)

1) 如果您的问题是如何在java中打印对象属性

System.out.println(product)
2) 要在JSP中打印它

 ${product}
这是您案例的toString方法

public String toString(){
return price + name;
}

你想做的基本上是没有意义的,因为你必须事先知道对象是什么,它的场是什么。如果出于某种原因,您仍然希望继续,您可以使用一个返回所需内容的方法:

public Map<String, Object> getProperties() {
    //create your map and populate it via plain strings-getters for fields
    //or use Java Reflection API
}

将对象替换为要确定的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>

声明字段&美元;{object.name}
  • ${field.name}:${object[field.name]}
显示所有声明的方法

<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>

声明的方法%object.getName()%
  • ${method.name}

即将使用的@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>

对象:${Object.class} 声明字段

  • ${attr.name}:${object[attr.name]}
没有声明的字段 声明方法
  • ${attr.name}(…)
没有声明的方法


Dankeschön für das
<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>