<c:forEach items="${salesProducts }" var="pro">

${pro.goodsName}
特价:¥${pro}

/c:forEach

pro的bean类属性都设了getter和setter方法,但是${pro.goodsName}没值,${pro}却有值

检查一下goodsName属性名称有没写错。

private String goodsName;
public String getGoodsName() {
    return this.goodsName;
}

public void setGoodsName(String goodsName) {
    this.goodsName = goodsName;
}

没有写错

你确认${salesProducts }有值吗?
看下这个例子:

 <%
    String[] colors = new String[] { "red", "green", "yellow", "black","silver" };
    pageContext.setAttribute("colors", colors);
%>

<c:forEach var="color" items="${pageScope.colors}">
    <c:if test="${color=='yellow'}">
        <c:out value="${color}" />
    </c:if>
</c:forEach>